From fb086691ad47cfc7e2f06d2abedfc3218bf40355 Mon Sep 17 00:00:00 2001 From: Wout Mertens Date: Mon, 2 Mar 2026 15:46:39 +0100 Subject: [PATCH 01/11] lint++ --- .../src/routes/(blog)/blog/components/mdx/article-block.tsx | 2 +- packages/qwik/src/core/shared/error/error.ts | 2 +- scripts/submodule-insights.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/docs/src/routes/(blog)/blog/components/mdx/article-block.tsx b/packages/docs/src/routes/(blog)/blog/components/mdx/article-block.tsx index ce195d52054..a17eaa09aec 100644 --- a/packages/docs/src/routes/(blog)/blog/components/mdx/article-block.tsx +++ b/packages/docs/src/routes/(blog)/blog/components/mdx/article-block.tsx @@ -9,7 +9,7 @@ export const ArticleBlock = component$(({ authorLink }) => { const location = useLocation(); const { frontmatter } = useDocumentHead(); const article = blogArticles.find(({ path }) => path === location.url.pathname); - const authorLinks = frontmatter.authors.map((author: string) => authors[author].socialLink); + const authorLinks = frontmatter.authors?.map((author: string) => authors[author].socialLink); return (
diff --git a/packages/qwik/src/core/shared/error/error.ts b/packages/qwik/src/core/shared/error/error.ts index d8ab462a313..7c15573283d 100644 --- a/packages/qwik/src/core/shared/error/error.ts +++ b/packages/qwik/src/core/shared/error/error.ts @@ -12,7 +12,7 @@ export const codeToText = (code: number, ...parts: any[]): string => { 'Only primitive and object literals can be serialized. {{0}}', // 3 'You can render over a existing q:container. Skipping render().', // 4 'QRL is not a function', // 5 - 'Dynamic import not found', // 6 + 'Dynamic import {{0}} not found', // 6 'Unknown type argument', // 7 `Actual value for useContext({{0}}) can not be found, make sure some ancestor component has set a value using useContextProvider(). In the browser make sure that the context was used during SSR so its state was serialized.`, // 8 "Invoking 'use*()' method outside of invocation context.", // 9 diff --git a/scripts/submodule-insights.ts b/scripts/submodule-insights.ts index d687fe04138..8700c34ae24 100644 --- a/scripts/submodule-insights.ts +++ b/scripts/submodule-insights.ts @@ -23,7 +23,7 @@ async function buildComponents(config: BuildConfig) { outDir: distBase, emptyOutDir: false, target: 'es2022', - minify: true, + minify: false, rollupOptions: { external: (id) => /^(@|node:)/i.test(id), }, From c9221e5997206ea5ed853b3abb245b92c0097d3f Mon Sep 17 00:00:00 2001 From: Wout Mertens Date: Wed, 25 Feb 2026 08:49:05 +0100 Subject: [PATCH 02/11] feat(optimizer): move module scoped vars to segments --- .../qwik/src/optimizer/core/src/code_move.rs | 4 + .../optimizer/core/src/dependency_analysis.rs | 464 ++++++++++++++++++ packages/qwik/src/optimizer/core/src/lib.rs | 1 + packages/qwik/src/optimizer/core/src/parse.rs | 168 ++++++- ...qwik_core__test__example_export_issue.snap | 3 +- .../qwik_core__test__example_exports.snap | 12 +- ...ore__test__example_invalid_references.snap | 39 +- ...t__example_segment_variable_migration.snap | 115 +++++ .../qwik_core__test__impure_template_fns.snap | 20 +- .../qwik_core__test__relative_paths.snap | 16 +- ...it_spread_props_with_additional_prop5.snap | 19 +- packages/qwik/src/optimizer/core/src/test.rs | 33 ++ .../qwik/src/optimizer/core/src/transform.rs | 3 + 13 files changed, 826 insertions(+), 71 deletions(-) create mode 100644 packages/qwik/src/optimizer/core/src/dependency_analysis.rs create mode 100644 packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_segment_variable_migration.snap diff --git a/packages/qwik/src/optimizer/core/src/code_move.rs b/packages/qwik/src/optimizer/core/src/code_move.rs index 3a791085180..a06a4a4dbf5 100644 --- a/packages/qwik/src/optimizer/core/src/code_move.rs +++ b/packages/qwik/src/optimizer/core/src/code_move.rs @@ -30,6 +30,7 @@ pub struct NewModuleCtx<'a> { pub leading_comments: SingleThreadedCommentsMap, pub trailing_comments: SingleThreadedCommentsMap, pub extra_top_items: &'a BTreeMap, + pub migrated_root_vars: &'a [ast::ModuleItem], } pub fn new_module(ctx: NewModuleCtx) -> Result<(ast::Module, SingleThreadedComments), Error> { @@ -144,6 +145,9 @@ pub fn new_module(ctx: NewModuleCtx) -> Result<(ast::Module, SingleThreadedComme ctx.expr }; + // Add migrated root variables first (before extra_top_items) + module.body.extend(ctx.migrated_root_vars.iter().cloned()); + module.body.extend(ctx.extra_top_items.values().cloned()); module.body.push(create_named_export(expr, ctx.name)); diff --git a/packages/qwik/src/optimizer/core/src/dependency_analysis.rs b/packages/qwik/src/optimizer/core/src/dependency_analysis.rs new file mode 100644 index 00000000000..e1fa8be437f --- /dev/null +++ b/packages/qwik/src/optimizer/core/src/dependency_analysis.rs @@ -0,0 +1,464 @@ +use std::collections::{HashMap, HashSet, VecDeque}; +use swc_common::DUMMY_SP; +use swc_ecmascript::ast; +use swc_ecmascript::visit::VisitWith; + +use crate::collector::{GlobalCollect, Id, IdentCollector}; + +/// Root-level declaration associated with an identifier. +#[derive(Clone, Debug)] +pub enum RootVarDecl { + Var(ast::VarDeclarator), + Fn(ast::FnDecl), + Class(ast::ClassDecl), + TsEnum(Box), +} + +/// Information about a root-level variable's dependencies +#[derive(Clone, Debug)] +pub struct RootVarDependency { + pub decl: RootVarDecl, + pub is_imported: bool, // true if this is from global.imports + pub is_exported: bool, // true if this is in global.exports + pub depends_on: Vec, // Other identifiers this var depends on +} + +/// Analyzes dependencies between root-level variables and imports. +/// Returns a map of root variable ID -> its dependencies +pub fn analyze_root_dependencies( + module: &ast::Module, + global_collect: &GlobalCollect, +) -> HashMap { + let mut dependencies: HashMap = HashMap::new(); + + // Track which variables are TRULY exported by the user (not auto-exports for segments) + // We check for "export const" declarations or explicit "export { }" statements + // that are NOT auto-exports (those have _auto_ prefix) + let mut user_exported = std::collections::HashSet::new(); + for item in &module.body { + match item { + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::ExportDecl(export_decl)) => { + match &export_decl.decl { + ast::Decl::Var(var_decl) => { + for decl in &var_decl.decls { + let mut ids = Vec::new(); + collect_decl_idents(&decl.name, &mut ids); + for id in ids { + user_exported.insert(id.clone()); + } + } + } + ast::Decl::Fn(function) => { + user_exported.insert((function.ident.sym.clone(), function.ident.ctxt)); + } + ast::Decl::Class(class) => { + user_exported.insert((class.ident.sym.clone(), class.ident.ctxt)); + } + ast::Decl::TsEnum(enu) => { + user_exported.insert((enu.id.sym.clone(), enu.id.ctxt)); + } + _ => {} + } + } + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::ExportNamed(named)) => { + for spec in &named.specifiers { + if let ast::ExportSpecifier::Named(named_spec) = spec { + if let ast::ModuleExportName::Ident(ident) = &named_spec.orig { + // Check if the exported name is _auto_ (auto-export for segments) + if let Some(ast::ModuleExportName::Ident(exported_id)) = + &named_spec.exported + { + let is_auto_export = exported_id.sym.starts_with("_auto_"); + if !is_auto_export { + let id = (ident.sym.clone(), ident.ctxt); + user_exported.insert(id.clone()); + } + } + } + } + } + } + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::ExportDefaultExpr(default_export)) => { + // Mark the default-exported identifier as exported + if let ast::Expr::Ident(ident) = &*default_export.expr { + user_exported.insert((ident.sym.clone(), ident.ctxt)); + } + } + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::ExportDefaultDecl(default_decl)) => { + // For "export default const X = ..." or function/class + match &default_decl.decl { + ast::DefaultDecl::Class(class) => { + if let Some(ident) = &class.ident { + user_exported.insert((ident.sym.clone(), ident.ctxt)); + } + } + ast::DefaultDecl::Fn(func) => { + if let Some(ident) = &func.ident { + user_exported.insert((ident.sym.clone(), ident.ctxt)); + } + } + _ => {} + } + } + _ => {} + } + } + + // First pass: collect ALL root declarations from the module body + for item in &module.body { + if let ast::ModuleItem::Stmt(ast::Stmt::Decl(decl)) = item { + match decl { + ast::Decl::Var(var_decl) => { + for decl in &var_decl.decls { + let mut declared_ids = Vec::new(); + collect_decl_idents(&decl.name, &mut declared_ids); + for var_id in declared_ids { + if !dependencies.contains_key(&var_id) { + dependencies.insert( + var_id.clone(), + RootVarDependency { + decl: RootVarDecl::Var(ast::VarDeclarator { + span: DUMMY_SP, + name: ast::Pat::Ident(ast::BindingIdent { + id: ast::Ident::new( + var_id.0.clone(), + DUMMY_SP, + var_id.1, + ), + type_ann: None, + }), + init: None, + definite: false, + }), + is_imported: false, + is_exported: user_exported.contains(&var_id), + depends_on: Vec::new(), + }, + ); + } + } + } + } + ast::Decl::Fn(function) => { + let var_id = (function.ident.sym.clone(), function.ident.ctxt); + dependencies + .entry(var_id.clone()) + .or_insert_with(|| RootVarDependency { + decl: RootVarDecl::Fn(function.clone()), + is_imported: false, + is_exported: user_exported.contains(&var_id), + depends_on: Vec::new(), + }); + } + ast::Decl::Class(class) => { + let var_id = (class.ident.sym.clone(), class.ident.ctxt); + dependencies + .entry(var_id.clone()) + .or_insert_with(|| RootVarDependency { + decl: RootVarDecl::Class(class.clone()), + is_imported: false, + is_exported: user_exported.contains(&var_id), + depends_on: Vec::new(), + }); + } + ast::Decl::TsEnum(enu) => { + let var_id = (enu.id.sym.clone(), enu.id.ctxt); + dependencies + .entry(var_id.clone()) + .or_insert_with(|| RootVarDependency { + decl: RootVarDecl::TsEnum(enu.clone()), + is_imported: false, + is_exported: user_exported.contains(&var_id), + depends_on: Vec::new(), + }); + } + _ => {} + } + } + } + + // Also add variables from global_collect.root (for imports) + for var_id in global_collect.root.keys() { + dependencies + .entry(var_id.clone()) + .or_insert_with(|| RootVarDependency { + decl: RootVarDecl::Var(ast::VarDeclarator { + span: DUMMY_SP, + name: ast::Pat::Ident(ast::BindingIdent { + id: ast::Ident::new(var_id.0.clone(), DUMMY_SP, var_id.1), + type_ann: None, + }), + init: None, + definite: false, + }), + is_imported: false, + is_exported: user_exported.contains(var_id), + depends_on: Vec::new(), + }); + } + + // Second pass: extract variable declarations and analyze dependencies + for item in &module.body { + if let ast::ModuleItem::Stmt(ast::Stmt::Decl(decl)) = item { + match decl { + ast::Decl::Var(var_decl) => { + for decl in &var_decl.decls { + // Get the identifier(s) being declared + let mut declared_ids = Vec::new(); + collect_decl_idents(&decl.name, &mut declared_ids); + + // Analyze the initializer expression for dependencies + if let Some(init_expr) = &decl.init { + let mut collector = IdentCollector::new(); + init_expr.visit_with(&mut collector); + let used_idents = collector.get_words(); + + // For each declared identifier, record its dependencies + for declared_id in declared_ids { + if let Some(dep_info) = dependencies.get_mut(&declared_id) { + dep_info.decl = RootVarDecl::Var(decl.clone()); + dep_info.depends_on = used_idents.clone(); + } + } + } else { + // No initializer, update the decl but keep empty dependencies + for declared_id in declared_ids { + if let Some(dep_info) = dependencies.get_mut(&declared_id) { + dep_info.decl = RootVarDecl::Var(decl.clone()); + } + } + } + } + } + ast::Decl::Fn(function) => { + let var_id = (function.ident.sym.clone(), function.ident.ctxt); + let mut collector = IdentCollector::new(); + if let Some(body) = &function.function.body { + body.visit_with(&mut collector); + } + let used_idents = collector.get_words(); + if let Some(dep_info) = dependencies.get_mut(&var_id) { + dep_info.decl = RootVarDecl::Fn(function.clone()); + dep_info.depends_on = used_idents; + } + } + ast::Decl::Class(class) => { + let var_id = (class.ident.sym.clone(), class.ident.ctxt); + let mut collector = IdentCollector::new(); + class.class.visit_with(&mut collector); + let used_idents = collector.get_words(); + if let Some(dep_info) = dependencies.get_mut(&var_id) { + dep_info.decl = RootVarDecl::Class(class.clone()); + dep_info.depends_on = used_idents; + } + } + ast::Decl::TsEnum(enu) => { + let var_id = (enu.id.sym.clone(), enu.id.ctxt); + if let Some(dep_info) = dependencies.get_mut(&var_id) { + dep_info.decl = RootVarDecl::TsEnum(enu.clone()); + } + } + _ => {} + } + } + } + + dependencies +} + +/// Collects all identifier names from a pattern +fn collect_decl_idents(pat: &ast::Pat, idents: &mut Vec) { + match pat { + ast::Pat::Ident(ident) => { + idents.push((ident.id.sym.clone(), ident.id.ctxt)); + } + ast::Pat::Array(array) => { + for elem in array.elems.iter().flatten() { + collect_decl_idents(elem, idents); + } + } + ast::Pat::Rest(rest) => { + collect_decl_idents(&rest.arg, idents); + } + ast::Pat::Object(obj) => { + for prop in &obj.props { + match prop { + ast::ObjectPatProp::Assign(assign) => { + idents.push((assign.key.sym.clone(), assign.key.ctxt)); + } + ast::ObjectPatProp::KeyValue(kv) => { + collect_decl_idents(&kv.value, idents); + } + ast::ObjectPatProp::Rest(rest) => { + collect_decl_idents(&rest.arg, idents); + } + } + } + } + ast::Pat::Assign(assign) => { + collect_decl_idents(&assign.left, idents); + } + _ => {} + } +} + +/// Finds which segments use which root variables. +/// Returns a map: root_var_id -> Vec +pub fn build_root_var_usage_map( + segments: &[crate::transform::Segment], + root_dependencies: &HashMap, +) -> HashMap> { + let mut usage_map: HashMap> = HashMap::new(); + + for (seg_idx, segment) in segments.iter().enumerate() { + // Check both local_idents and scoped_idents for variables used by this segment + let all_idents = [ + segment.data.local_idents.clone(), + segment.data.scoped_idents.clone(), + ] + .concat(); + for local_id in &all_idents { + // Only track if this is a root variable (not imported from external modules) + if root_dependencies.contains_key(local_id) { + usage_map.entry(local_id.clone()).or_default().push(seg_idx); + } + } + } + + usage_map +} + +/// Finds variables that are exclusive to a single segment and not exported. +/// For each exclusive variable, also collects its transitive dependencies. +/// Returns a map of segment_index -> Vec +pub fn find_migratable_vars( + segments: &[crate::transform::Segment], + root_dependencies: &HashMap, + root_var_usage: &HashMap>, +) -> HashMap> { + let mut migratable: HashMap> = HashMap::new(); + + for (root_var_id, segments_using) in root_var_usage.iter() { + // Only migrate if: + // 1. Used by exactly one segment + // 2. Not exported + // 3. Not already an import (must be a root variable declaration) + if segments_using.len() == 1 { + let seg_idx = segments_using[0]; + if let Some(dep_info) = root_dependencies.get(root_var_id) { + if !dep_info.is_exported && !dep_info.is_imported { + // Collect this variable and its transitive dependencies + let transitive = collect_transitive_dependencies( + root_var_id, + root_dependencies, + segments, + seg_idx, + ); + + migratable.entry(seg_idx).or_default().extend(transitive); + } + } + } + } + + migratable +} + +/// Recursively collects all transitive dependencies of a variable that should be migrated. +fn collect_transitive_dependencies( + var_id: &Id, + root_dependencies: &HashMap, + _segments: &[crate::transform::Segment], + _target_seg_idx: usize, +) -> Vec { + let mut result = vec![var_id.clone()]; + let mut queue = VecDeque::new(); + queue.push_back(var_id.clone()); + let mut visited = HashSet::new(); + visited.insert(var_id.clone()); + + while let Some(current_id) = queue.pop_front() { + if let Some(dep_info) = root_dependencies.get(¤t_id) { + for dep in &dep_info.depends_on { + if !visited.contains(dep) { + visited.insert(dep.clone()); + + // Only include dependency if it's: + // 1. A root variable (not imported) + // 2. Not exported + // 3. Only used by this segment or shared with no harm + if let Some(dep_info) = root_dependencies.get(dep) { + if !dep_info.is_exported && !dep_info.is_imported { + // Assume it's safe to migrate (doesn't have side effects) + result.push(dep.clone()); + queue.push_back(dep.clone()); + } + } + } + } + } + } + + result +} + +/// Topologically sorts variables by their dependencies. +/// Returns variables in declaration order (dependencies first). +pub fn topological_sort_variables( + var_ids: &[Id], + root_dependencies: &HashMap, +) -> Vec { + let mut in_degree: HashMap = HashMap::new(); + let mut adj_list: HashMap> = HashMap::new(); + + // Initialize + for var_id in var_ids { + if !in_degree.contains_key(var_id) { + in_degree.insert(var_id.clone(), 0); + } + if !adj_list.contains_key(var_id) { + adj_list.insert(var_id.clone(), Vec::new()); + } + } + + // Build graph: for each variable, add edges from its dependencies + for var_id in var_ids { + if let Some(dep_info) = root_dependencies.get(var_id) { + for dep in &dep_info.depends_on { + // Only consider dependencies within our set + if var_ids.iter().any(|v| v == dep) { + // dep -> var_id (var_id depends on dep) + adj_list + .entry(dep.clone()) + .or_default() + .push(var_id.clone()); + *in_degree.entry(var_id.clone()).or_insert(0) += 1; + } + } + } + } + + // Kahn's algorithm + let mut queue: VecDeque = in_degree + .iter() + .filter(|(_, °ree)| degree == 0) + .map(|(id, _)| id.clone()) + .collect(); + + let mut result = Vec::new(); + while let Some(current) = queue.pop_front() { + result.push(current.clone()); + + if let Some(neighbors) = adj_list.get(¤t) { + for neighbor in neighbors { + let new_degree = in_degree[neighbor] - 1; + in_degree.insert(neighbor.clone(), new_degree); + if new_degree == 0 { + queue.push_back(neighbor.clone()); + } + } + } + } + + result +} diff --git a/packages/qwik/src/optimizer/core/src/lib.rs b/packages/qwik/src/optimizer/core/src/lib.rs index 5df59222a94..bf76c82c35f 100644 --- a/packages/qwik/src/optimizer/core/src/lib.rs +++ b/packages/qwik/src/optimizer/core/src/lib.rs @@ -13,6 +13,7 @@ mod clean_side_effects; mod code_move; mod collector; mod const_replace; +mod dependency_analysis; mod entry_strategy; mod errors; mod filter_exports; diff --git a/packages/qwik/src/optimizer/core/src/parse.rs b/packages/qwik/src/optimizer/core/src/parse.rs index 0392eba6dfe..074f3bb83da 100644 --- a/packages/qwik/src/optimizer/core/src/parse.rs +++ b/packages/qwik/src/optimizer/core/src/parse.rs @@ -8,8 +8,12 @@ use std::str; use crate::add_side_effect::SideEffectVisitor; use crate::clean_side_effects::Treeshaker; use crate::code_move::{new_module, NewModuleCtx}; -use crate::collector::global_collect; +use crate::collector::{collect_from_pat, global_collect, Id}; use crate::const_replace::ConstReplacerVisitor; +use crate::dependency_analysis::{ + analyze_root_dependencies, build_root_var_usage_map, find_migratable_vars, + topological_sort_variables, RootVarDecl, +}; use crate::entry_strategy::EntryPolicy; use crate::filter_exports::StripExportsVisitor; use crate::props_destructuring::transform_props_destructuring; @@ -380,6 +384,23 @@ pub fn transform_code(config: TransformCodeOptions) -> Result Result>(path: P) -> PathBuf { } normalized } + +/// Analyzes root variables and migrates segment-exclusive ones into their respective segments. +/// This reduces the parent module footprint and improves code chunking. +/// Returns the set of Id's that were migrated, so they can be removed from root exports. +fn apply_variable_migration( + segments: &mut [Segment], + module: &ast::Module, + global_collect: &crate::collector::GlobalCollect, +) -> std::collections::HashSet { + // Analyze root variable dependencies + let root_dependencies = analyze_root_dependencies(module, global_collect); + + // Build usage map: which segments use which root variables + let root_var_usage = build_root_var_usage_map(segments, &root_dependencies); + + // Find migratable variables: those used by exactly one segment and not exported + let migratable = find_migratable_vars(segments, &root_dependencies, &root_var_usage); + + let mut migrated_ids = std::collections::HashSet::new(); + + // For each segment with migratable variables, extract and populate their declarations + for (seg_idx, var_ids) in migratable { + if seg_idx >= segments.len() { + continue; + } + + // Sort variables by their dependencies (topological sort) + let sorted_var_ids = topological_sort_variables(&var_ids, &root_dependencies); + + // Deduplicate declarations - multiple IDs can point to the same destructuring assignment + let mut seen_var_decls = std::collections::HashSet::new(); + let mut unique_module_items = Vec::new(); + + for var_id in &sorted_var_ids { + if let Some(dep_info) = root_dependencies.get(var_id) { + // Compare by content, not pointer - create a hash of the declaration + let decl_key = match &dep_info.decl { + RootVarDecl::Var(decl) => format!("var:{:?}|{:?}", decl.name, decl.init), + RootVarDecl::Fn(decl) => format!("fn:{:?}", decl.ident), + RootVarDecl::Class(decl) => format!("class:{:?}", decl.ident), + RootVarDecl::TsEnum(decl) => format!("enum:{:?}", decl.id), + }; + + // Only add this var_decl if we haven't seen it before + if seen_var_decls.insert(decl_key) { + let module_item = match &dep_info.decl { + RootVarDecl::Var(decl) => { + let var_decl = ast::VarDecl { + span: swc_common::DUMMY_SP, + kind: ast::VarDeclKind::Const, + decls: vec![decl.clone()], + declare: false, + ctxt: swc_common::SyntaxContext::empty(), + }; + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(Box::new( + var_decl, + )))) + } + RootVarDecl::Fn(decl) => { + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Fn(decl.clone()))) + } + RootVarDecl::Class(decl) => { + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Class(decl.clone()))) + } + RootVarDecl::TsEnum(decl) => { + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::TsEnum(decl.clone()))) + } + }; + unique_module_items.push(module_item); + } + migrated_ids.insert(var_id.clone()); + } + } + + // Populate the segment's migrated_root_vars with deduplicated items + segments[seg_idx].data.migrated_root_vars = unique_module_items; + + // CRITICAL: Remove migrated variables from segment's local_idents and scoped_idents + // so that new_module() doesn't generate imports for them + segments[seg_idx] + .data + .local_idents + .retain(|id| !sorted_var_ids.contains(id)); + segments[seg_idx] + .data + .scoped_idents + .retain(|id| !sorted_var_ids.contains(id)); + } + + migrated_ids +} + +/// Removes exports and variable declarations for migrated variables from the root module. +/// These variables are now defined in their respective segment files. +fn remove_migrated_exports(module: &mut ast::Module, migrated_ids: &std::collections::HashSet) { + if migrated_ids.is_empty() { + return; + } + + // Extract just the symbol names for comparison (ignore SyntaxContext) + let migrated_syms: std::collections::HashSet<_> = + migrated_ids.iter().map(|(sym, _)| sym.clone()).collect(); + + module.body.retain_mut(|item| { + match item { + // Remove export statements for migrated variables + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::ExportNamed(export)) => { + export.specifiers.retain(|spec| { + if let ast::ExportSpecifier::Named(named) = spec { + if let ast::ModuleExportName::Ident(orig_ident) = &named.orig { + !migrated_syms.contains(&orig_ident.sym) + } else { + true + } + } else { + true + } + }); + // Keep the export only if there are still specifiers + !export.specifiers.is_empty() + } + // Remove/filter variable declarations for migrated variables + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(var_decl))) => { + var_decl.decls.retain(|decl| { + let mut ids = Vec::new(); + let _ = collect_from_pat(&decl.name, &mut ids); + !ids.iter().any(|(id, _)| migrated_syms.contains(&id.0)) + }); + // Return true only if there are declarators left + !var_decl.decls.is_empty() + } + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Fn(function))) => { + !migrated_syms.contains(&function.ident.sym) + } + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Class(class))) => { + !migrated_syms.contains(&class.ident.sym) + } + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::TsEnum(enu))) => { + !migrated_syms.contains(&enu.id.sym) + } + _ => true, + } + }); +} diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_export_issue.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_export_issue.snap index 1ae74600760..93ded405d39 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_export_issue.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_export_issue.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2409 +assertion_line: 2410 expression: output -snapshot_kind: text --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_exports.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_exports.snap index ef0ad99f3e8..72b8f50c680 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_exports.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_exports.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 1095 +assertion_line: 1096 expression: output -snapshot_kind: text --- ==INPUT== @@ -67,9 +66,8 @@ import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; const i_UVBJuFYfvDo = ()=>import("./test.tsx_Header_component_UVBJuFYfvDo"); export const [a, { b, v1: [c], d = v2, ...e }, f = v3, ...g] = obj; -const exp1 = 1; const internal = 2; -export { exp1, internal as expr2 }; +export { internal as expr2 }; export function foo() {} export class bar { } @@ -78,7 +76,7 @@ export const Header = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_UVBJuFYfvDo export const Footer = /*#__PURE__*/ componentQrl(); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,CAAC,GAAG,EAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAE,EAAE,EAAE,GAAG,GAAE,EAAE,IAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;AAE7D,MAAM,OAAO;AACb,MAAM,WAAW;AACjB,SAAQ,IAAI,EAAE,YAAY,KAAK,GAAE;AAEjC,OAAO,SAAS,OAAQ;AACxB,OAAO,MAAM;AAAK;AAElB,eAAe,SAAS,aAAa;AAErC,OAAO,MAAM,uBAAS,+EAOnB;AAEH,OAAO,MAAM,uBAAS,eAAa\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,CAAC,GAAG,EAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAE,EAAE,EAAE,GAAG,GAAE,EAAE,IAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;AAG7D,MAAM,WAAW;AACjB,SAAc,YAAY,KAAK,GAAE;AAEjC,OAAO,SAAS,OAAQ;AACxB,OAAO,MAAM;AAAK;AAElB,eAAe,SAAS,aAAa;AAErC,OAAO,MAAM,uBAAS,+EAOnB;AAEH,OAAO,MAAM,uBAAS,eAAa\"}") ============================= project/test.tsx_Header_component_1_uWM1kg0IGO0.jsx (ENTRY POINT)== import { default as DefaultFn } from "./test"; @@ -89,17 +87,17 @@ import { bar } from "./test"; import { c } from "./test"; import { d } from "./test"; import { e } from "./test"; -import { exp1 } from "./test"; import { f } from "./test"; import { foo } from "./test"; import { expr2 as internal } from "./test"; +const exp1 = 1; export const Header_component_1_uWM1kg0IGO0 = ()=>
{a}{b}{c}{d}{e}{f}{exp1}{internal}{foo}{bar}{DefaultFn}
{v1}{v2}{v3}{obj}
; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;8CAeU,KACP,OAAO;GACP,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,UAAU,KAAK,KAAK,YAAY,IAAI;GAClE,CAAC,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI;EAC7B,EAAE\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;;MAKM,OAAO;8CAUH,KACP,OAAO;GACP,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,UAAU,KAAK,KAAK,YAAY,IAAI;GAClE,CAAC,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI;EAC7B,EAAE\"}") /* { "origin": "project/test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_references.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_references.snap index 6e02dd158c5..bcf5f7f35bb 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_references.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_references.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 970 +assertion_line: 971 expression: output -snapshot_kind: text --- ==INPUT== @@ -29,37 +28,16 @@ export const App = component$(({count}) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); -const I1 = 12; -const [I2, { I3, v1: [I4], I5 = v2, ...I6 }, I7 = v3, ...I8] = obj; -function I9() {} -class I10 { -} export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); -export { I1 as _auto_I1 }; -export { I10 as _auto_I10 }; -export { I2 as _auto_I2 }; -export { I3 as _auto_I3 }; -export { I4 as _auto_I4 }; -export { I5 as _auto_I5 }; -export { I6 as _auto_I6 }; -export { I7 as _auto_I7 }; -export { I8 as _auto_I8 }; -export { I9 as _auto_I9 }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,MAAM,KAAK;AACX,MAAM,CAAC,IAAI,EAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,KAAG,EAAE,EAAE,GAAG,IAAG,EAAE,KAAG,EAAE,EAAE,GAAG,GAAG,GAAG;AACzD,SAAS,MAAM;AACf,MAAM;AAAK;AAEX,OAAO,MAAM,oBAAM,4EAQjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAQA,OAAO,MAAM,oBAAM,4EAQjB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== -import { _auto_I1 as I1 } from "./test"; -import { _auto_I2 as I2 } from "./test"; -import { _auto_I3 as I3 } from "./test"; -import { _auto_I4 as I4 } from "./test"; -import { _auto_I5 as I5 } from "./test"; -import { _auto_I6 as I6 } from "./test"; -import { _auto_I7 as I7 } from "./test"; -import { _auto_I8 as I8 } from "./test"; -import { _auto_I9 as I9 } from "./test"; import { qrl } from "@qwik.dev/core"; +const [I2, { I3, v1: [I4], I5 = v2, ...I6 }, I7 = v3, ...I8] = obj; +function I9() {} +const I1 = 12; const i_w0t0o3QMovU = ()=>import("./test.tsx_App_component_1_w0t0o3QMovU"); export const App_component_ckEPmXZlub0 = (_rawProps)=>{ console.log(I1, I2, I3, I4, I5, I6, I7, I8, I9); @@ -68,7 +46,7 @@ export const App_component_ckEPmXZlub0 = (_rawProps)=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;;yCAQ8B;IAC7B,QAAQ,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;IAC5C,QAAQ,GAAG,CAAC,OAAO,IAAI,IAAI,IAAI;IAC/B;AAKD\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";MAIM,CAAC,IAAI,EAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,KAAG,EAAE,EAAE,GAAG,IAAG,EAAE,KAAG,EAAE,EAAE,GAAG,GAAG,GAAG;AACzD,SAAS,MAAM;MAFT,KAAK;;yCAKmB;IAC7B,QAAQ,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;IAC5C,QAAQ,GAAG,CAAC,OAAO,IAAI,IAAI,IAAI;IAC/B;AAKD\"}") /* { "origin": "test.tsx", @@ -94,14 +72,15 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma */ ============================= test.tsx_App_component_1_w0t0o3QMovU.js (ENTRY POINT)== -import { _auto_I10 as I10 } from "./test"; import { _jsxSorted } from "@qwik.dev/core"; +class I10 { +} export const App_component_1_w0t0o3QMovU = ()=>{ return /*#__PURE__*/ _jsxSorted(I10, null, null, null, 3, "u6_0"); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;2CAWU;IACR,qBACC,WAAC;AAEH\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";AAMA,MAAM;AAAK;2CAKD;IACR,qBACC,WAAC;AAEH\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_segment_variable_migration.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_segment_variable_migration.snap new file mode 100644 index 00000000000..357218dcec2 --- /dev/null +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_segment_variable_migration.snap @@ -0,0 +1,115 @@ +--- +source: packages/qwik/src/optimizer/core/src/test.rs +assertion_line: 5772 +expression: output +--- +==INPUT== + + +import { component$ } from '@qwik.dev/core'; + +// This helper is only used by App component, so it should be migrated to its segment +const helperFn = (msg) => { + console.log('Helper: ' + msg); + return msg.toUpperCase(); +}; + +// This shared variable is used by multiple segments, so it should stay at root +const SHARED_CONFIG = { value: 42 }; + +// This is an export, so it must stay at root +export const publicHelper = () => console.log('public'); + +export const App = component$(() => { + const result = helperFn('hello'); + return
{result} {SHARED_CONFIG.value}
; +}); + +export const Other = component$(() => { + return
{SHARED_CONFIG.value}
; +}); + +============================= test.tsx_Other_component_C1my3EIdP1k.tsx (ENTRY POINT)== + +import { _auto_SHARED_CONFIG as SHARED_CONFIG } from "./test"; +export const Other_component_C1my3EIdP1k = ()=>{ + return
{SHARED_CONFIG.value}
; +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";2CAoBgC;IAC/B,QAAQ,KAAK,cAAc,KAAK,GAAG;AACpC\"}") +/* +{ + "origin": "test.tsx", + "name": "Other_component_C1my3EIdP1k", + "entry": null, + "displayName": "test.tsx_Other_component", + "hash": "C1my3EIdP1k", + "canonicalFilename": "test.tsx_Other_component_C1my3EIdP1k", + "path": "", + "extension": "tsx", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 608, + 659 + ] +} +*/ +============================= test.tsx == + +import { componentQrl } from "@qwik.dev/core"; +import { qrl } from "@qwik.dev/core"; +const i_C1my3EIdP1k = ()=>import("./test.tsx_Other_component_C1my3EIdP1k"); +const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); +// This shared variable is used by multiple segments, so it should stay at root +const SHARED_CONFIG = { + value: 42 +}; +// This is an export, so it must stay at root +export const publicHelper = ()=>console.log('public'); +export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +export const Other = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_C1my3EIdP1k, "Other_component_C1my3EIdP1k")); +export { SHARED_CONFIG as _auto_SHARED_CONFIG }; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AASA,+EAA+E;AAC/E,MAAM,gBAAgB;IAAE,OAAO;AAAG;AAElC,6CAA6C;AAC7C,OAAO,MAAM,eAAe,IAAM,QAAQ,GAAG,CAAC,UAAU;AAExD,OAAO,MAAM,oBAAM,4EAGhB;AAEH,OAAO,MAAM,sBAAQ,8EAElB\"}") +============================= test.tsx_App_component_ckEPmXZlub0.tsx (ENTRY POINT)== + +import { _auto_SHARED_CONFIG as SHARED_CONFIG } from "./test"; +const helperFn = (msg)=>{ + console.log('Helper: ' + msg); + return msg.toUpperCase(); +}; +export const App_component_ckEPmXZlub0 = ()=>{ + const result = helperFn('hello'); + return
{result} {SHARED_CONFIG.value}
; +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";MAIM,WAAW,CAAC;IACjB,QAAQ,GAAG,CAAC,aAAa;IACzB,OAAO,IAAI,WAAW;AACvB;yCAQ8B;IAC7B,MAAM,SAAS,SAAS;IACxB,QAAQ,KAAK,OAAO,CAAC,CAAC,cAAc,KAAK,GAAG;AAC7C\"}") +/* +{ + "origin": "test.tsx", + "name": "App_component_ckEPmXZlub0", + "entry": null, + "displayName": "test.tsx_App_component", + "hash": "ckEPmXZlub0", + "canonicalFilename": "test.tsx_App_component_ckEPmXZlub0", + "path": "", + "extension": "tsx", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 477, + 572 + ] +} +*/ +== DIAGNOSTICS == + +[] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__impure_template_fns.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__impure_template_fns.snap index b0feb995471..578be927113 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__impure_template_fns.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__impure_template_fns.snap @@ -65,8 +65,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -import { _auto_useFoo as useFoo } from "./test"; import { useSignal } from "@qwik.dev/core"; +const useFoo = (count)=>{ + const tag = (s)=>{ + const value = typeof s === "string" ? s : s[0]; + return `${value}-${count.value}`; + }; + return tag; +}; const i_7MTd2pAiliw = ()=>import("./test.tsx_test_component_Fragment_button_q_e_click_7MTd2pAiliw"); export const test_component_LUXeXe0DQrg = ()=>{ const count = useSignal(0); @@ -83,7 +89,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;0CAU4B;IACzB,MAAM,QAAQ,UAAU;IACxB,MAAM,MAAM,OAAO;IACnB,qBACC;sBACC,WAAC,iBAAG,IAAI;sBACR,WAAC,iBAAG,GAAG,CAAC,IAAI,CAAC;sBACb,WAAC;YAAO,WAAQ;;;WAAuB;;AAG1C\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;MAEQ,SAAS,CAAC;IACf,MAAM,MAAM,CAAC;QACZ,MAAM,QAAQ,OAAO,MAAM,WAAW,IAAI,CAAC,CAAC,EAAE;QAC9C,OAAO,GAAG,MAAM,CAAC,EAAE,MAAM,KAAK,EAAE;IACjC;IACA,OAAO;AACR;;0CAE0B;IACzB,MAAM,QAAQ,UAAU;IACxB,MAAM,MAAM,OAAO;IACnB,qBACC;sBACC,WAAC,iBAAG,IAAI;sBACR,WAAC,iBAAG,GAAG,CAAC,IAAI,CAAC;sBACb,WAAC;YAAO,WAAQ;;;WAAuB;;AAG1C\"}") /* { "origin": "test.tsx", @@ -109,18 +115,10 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -const useFoo = (count)=>{ - const tag = (s)=>{ - const value = typeof s === "string" ? s : s[0]; - return `${value}-${count.value}`; - }; - return tag; -}; export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); -export { useFoo as _auto_useFoo }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEE,MAAM,SAAS,CAAC;IACf,MAAM,MAAM,CAAC;QACZ,MAAM,QAAQ,OAAO,MAAM,WAAW,IAAI,CAAC,CAAC,EAAE;QAC9C,OAAO,GAAG,MAAM,CAAC,EAAE,MAAM,KAAK,EAAE;IACjC;IACA,OAAO;AACR;AAEA,6BAAe,6EAUZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAUE,6BAAe,6EAUZ\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__relative_paths.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__relative_paths.snap index 86b52b21f2a..e6b1f2a5e4b 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__relative_paths.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__relative_paths.snap @@ -41,7 +41,11 @@ Some("{\"version\":3,\"sources\":[\"node_modules/dep/dist/lib.mjs\"],\"sourceRoo import { _jsxSorted } from "@qwik.dev/core"; import { _wrapProp } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -import { _auto_useData as useData } from "./lib.mjs"; +const useData = ()=>{ + return useStore({ + count: 0 + }); +}; const i_8dWUa0cJAr4 = ()=>import("./lib.mjs_App_component_div_p_button_onClick_8dWUa0cJAr4.js"); export const App_component_AkbU84a8zes = ()=>{ const store = useData(); @@ -59,7 +63,7 @@ export const App_component_AkbU84a8zes = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"node_modules/dep/dist/lib.mjs\"],\"sourceRoot\":\"/path/to/app/\",\"names\":[],\"mappings\":\";;;;;yCAWyD;IACxD,MAAM,QAAQ;IACd,OAAO,WAAW,GAAG,WAAK,mBACf;QACT,WAAW,GAAG,WAAK,iBACR;YACT;sBACA;SACA;QAEF,WAAW,GAAG,WAAI,iBACP,WAAW,GAAG,WAAI;YAC3B,WAAQ;;;iBAME;KAGZ;AAEH\"}") +Some("{\"version\":3,\"sources\":[\"node_modules/dep/dist/lib.mjs\"],\"sourceRoot\":\"/path/to/app/\",\"names\":[],\"mappings\":\";;;MAKM,UAAU;IACf,OAAO,SAAS;QACf,OAAO;IACR;AACD;;yCAEyD;IACxD,MAAM,QAAQ;IACd,OAAO,WAAW,GAAG,WAAK,mBACf;QACT,WAAW,GAAG,WAAK,iBACR;YACT;sBACA;SACA;QAEF,WAAW,GAAG,WAAI,iBACP,WAAW,GAAG,WAAI;YAC3B,WAAQ;;;iBAME;KAGZ;AAEH\"}") /* { "origin": "../../node_modules/dep/dist/lib.mjs", @@ -85,16 +89,10 @@ Some("{\"version\":3,\"sources\":[\"node_modules/dep/dist/lib.mjs\"],\"sourceRoo import { qrl } from "@qwik.dev/core"; const i_AkbU84a8zes = ()=>import("./lib.mjs_App_component_AkbU84a8zes.js"); import { componentQrl, useStore } from "@qwik.dev/core"; -const useData = ()=>{ - return useStore({ - count: 0 - }); -}; export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_AkbU84a8zes, "App_component_AkbU84a8zes")); -export { useData as _auto_useData }; -Some("{\"version\":3,\"sources\":[\"node_modules/dep/dist/lib.mjs\"],\"sourceRoot\":\"/path/to/app/\",\"names\":[],\"mappings\":\";;AACA,SAAS,YAAY,EAAc,QAAQ,QAAyB,iBAAiB;AAIrF,MAAM,UAAU;IACf,OAAO,SAAS;QACf,OAAO;IACR;AACD;AAEA,OAAO,MAAM,MAAM,WAAW,GAAG,4EAuBA\"}") +Some("{\"version\":3,\"sources\":[\"node_modules/dep/dist/lib.mjs\"],\"sourceRoot\":\"/path/to/app/\",\"names\":[],\"mappings\":\";;AACA,SAAS,YAAY,EAAc,QAAQ,QAAyB,iBAAiB;AAUrF,OAAO,MAAM,MAAM,WAAW,GAAG,4EAuBA\"}") ============================= components/main.tsx_Local_component_jJ0v28bs0p8.js (ENTRY POINT)== import { _jsxSorted } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop5.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop5.snap index b38caeaed81..ada55ede488 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop5.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop5.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4528 +assertion_line: 4529 expression: output -snapshot_kind: text --- ==INPUT== @@ -28,20 +27,18 @@ import { _jsxSplit } from "@qwik.dev/core"; import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -function Hola(props) { - return /*#__PURE__*/ _jsxSplit("div", { - ..._getVarProps(props) - }, _getConstProps(props), null, 0, "u6_0"); -} export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); -export { Hola as _auto_Hola }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;AAGE,SAAS,KAAK,KAAU;IACvB,qBAAO,UAAC;wBAAQ;sBAAA;AACjB;AAEA,6BAAe,6EAKZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;AAOE,6BAAe,6EAKZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== -import { _auto_Hola as Hola } from "./test"; import { _jsxSorted } from "@qwik.dev/core"; +function Hola(props) { + return /*#__PURE__*/ _jsxSplit("div", { + ..._getVarProps(props) + }, _getConstProps(props), null, 0, "u6_0"); +} export const test_component_LUXeXe0DQrg = ()=>{ return /*#__PURE__*/ _jsxSorted(Hola, null, null, [ /*#__PURE__*/ _jsxSorted("div", null, null, "1", 3, null), @@ -50,7 +47,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;0CAO4B;IAC1B,qBAAO,WAAC;sBACP,WAAC,mBAAI;sBACL,WAAC,mBAAI;;AAEN\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";AAGE,SAAS,KAAK,KAAU;IACvB,qBAAO,UAAC;wBAAQ;sBAAA;AACjB;0CAE0B;IAC1B,qBAAO,WAAC;sBACP,WAAC,mBAAI;sBACL,WAAC,mBAAI;;AAEN\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/test.rs b/packages/qwik/src/optimizer/core/src/test.rs index bdf692b656e..f3ed6cccbd9 100644 --- a/packages/qwik/src/optimizer/core/src/test.rs +++ b/packages/qwik/src/optimizer/core/src/test.rs @@ -5767,6 +5767,39 @@ struct TestInput { pub is_server: Option, } +#[test] +fn example_segment_variable_migration() { + test_input!(TestInput { + code: r#" +import { component$ } from '@qwik.dev/core'; + +// This helper is only used by App component, so it should be migrated to its segment +const helperFn = (msg) => { + console.log('Helper: ' + msg); + return msg.toUpperCase(); +}; + +// This shared variable is used by multiple segments, so it should stay at root +const SHARED_CONFIG = { value: 42 }; + +// This is an export, so it must stay at root +export const publicHelper = () => console.log('public'); + +export const App = component$(() => { + const result = helperFn('hello'); + return
{result} {SHARED_CONFIG.value}
; +}); + +export const Other = component$(() => { + return
{SHARED_CONFIG.value}
; +}); +"# + .to_string(), + snapshot: true, + ..TestInput::default() + }); +} + impl TestInput { pub fn default() -> Self { Self { diff --git a/packages/qwik/src/optimizer/core/src/transform.rs b/packages/qwik/src/optimizer/core/src/transform.rs index 005b2074fa0..4b51406d725 100644 --- a/packages/qwik/src/optimizer/core/src/transform.rs +++ b/packages/qwik/src/optimizer/core/src/transform.rs @@ -75,6 +75,7 @@ pub struct SegmentData { pub display_name: Atom, pub hash: Atom, pub need_transform: bool, + pub migrated_root_vars: Vec, } #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] @@ -462,6 +463,7 @@ impl<'a> QwikTransform<'a> { display_name, need_transform: false, hash, + migrated_root_vars: Vec::new(), }; let should_emit = self.should_emit_segment(&segment_data); if should_emit { @@ -730,6 +732,7 @@ impl<'a> QwikTransform<'a> { display_name, need_transform: true, hash, + migrated_root_vars: Vec::new(), }; let should_emit = self.should_emit_segment(&segment_data); if should_emit { From e8158b96be68e2423fcb3da4362e46920d6af03e Mon Sep 17 00:00:00 2001 From: Wout Mertens Date: Mon, 2 Mar 2026 21:09:53 +0100 Subject: [PATCH 03/11] feat(optimizer): QRL hoisting and self references - self references: `const foo = $(() => console.log(foo))` works now - QRL hoisting: if a QRL doesn't capture anything, it's moved to module scope --- .changeset/big-rocks-roll.md | 5 + .changeset/big-rocks-rumble.md | 5 + .changeset/big-rocks-start.md | 5 + AGENTS.md | 38 +- Cargo.lock | 1 + package.json | 1 + .../routes/docs/(qwik)/core/state/index.mdx | 7 +- .../src/core/shared/platform/platform.unit.ts | 2 +- .../qwik/src/core/tests/render-api.spec.tsx | 18 +- packages/qwik/src/optimizer/core/Cargo.toml | 1 + .../qwik/src/optimizer/core/src/code_move.rs | 1401 +++++- .../qwik/src/optimizer/core/src/collector.rs | 132 +- .../optimizer/core/src/dependency_analysis.rs | 126 +- .../core/src/fixtures/index.qwik.mjs | 2405 +++++---- .../qwik/src/optimizer/core/src/is_const.rs | 2 +- packages/qwik/src/optimizer/core/src/parse.rs | 611 ++- ..._component_level_self_referential_qrl.snap | 172 + ...e__test__destructure_args_colon_props.snap | 9 +- ...__test__destructure_args_colon_props2.snap | 9 +- ...__test__destructure_args_colon_props3.snap | 8 +- ...estructure_args_inline_cmp_block_stmt.snap | 2 +- ...structure_args_inline_cmp_block_stmt2.snap | 2 +- ...destructure_args_inline_cmp_expr_stmt.snap | 2 +- .../snapshots/qwik_core__test__example_1.snap | 103 +- .../qwik_core__test__example_10.snap | 6 +- .../qwik_core__test__example_11.snap | 19 +- .../snapshots/qwik_core__test__example_2.snap | 13 +- .../snapshots/qwik_core__test__example_3.snap | 11 +- .../snapshots/qwik_core__test__example_4.snap | 11 +- .../snapshots/qwik_core__test__example_5.snap | 15 +- .../snapshots/qwik_core__test__example_6.snap | 8 +- .../snapshots/qwik_core__test__example_7.snap | 17 +- .../snapshots/qwik_core__test__example_8.snap | 13 +- .../snapshots/qwik_core__test__example_9.snap | 6 +- ...qwik_core__test__example_build_server.snap | 9 +- ...k_core__test__example_capture_imports.snap | 17 +- ...ore__test__example_capturing_fn_class.snap | 13 +- .../qwik_core__test__example_class_name.snap | 6 +- ...nent_with_event_listeners_inside_loop.snap | 8 +- ...est__example_custom_inlined_functions.snap | 12 +- .../qwik_core__test__example_dead_code.snap | 9 +- ...ik_core__test__example_default_export.snap | 10 +- ...e__test__example_default_export_index.snap | 10 +- ..._example_default_export_invalid_ident.snap | 12 +- ...est__example_derived_signals_children.snap | 8 +- ...re__test__example_derived_signals_cmp.snap | 8 +- ...ple_derived_signals_complext_children.snap | 3 +- ...re__test__example_derived_signals_div.snap | 8 +- ...ple_derived_signals_multiple_children.snap | 8 +- .../qwik_core__test__example_dev_mode.snap | 24 +- ..._core__test__example_dev_mode_inlined.snap | 10 +- ...core__test__example_drop_side_effects.snap | 43 +- ...st__example_explicit_ext_no_transpile.snap | 17 +- ..._test__example_explicit_ext_transpile.snap | 17 +- ...qwik_core__test__example_export_issue.snap | 10 +- .../qwik_core__test__example_exports.snap | 17 +- ...ore__test__example_fix_dynamic_import.snap | 9 +- ...e__test__example_functional_component.snap | 12 +- ..._test__example_functional_component_2.snap | 8 +- ...le_functional_component_capture_props.snap | 6 +- ...core__test__example_getter_generation.snap | 10 +- ...ore__test__example_immutable_analysis.snap | 14 +- ...example_immutable_function_components.snap | 3 +- ..._core__test__example_import_assertion.snap | 9 +- ..._test__example_inlined_entry_strategy.snap | 22 +- .../qwik_core__test__example_input_bind.snap | 7 +- ...ore__test__example_invalid_references.snap | 14 +- ...__test__example_invalid_segment_expr1.snap | 74 +- .../qwik_core__test__example_issue_33443.snap | 4 +- .../qwik_core__test__example_issue_4438.snap | 3 +- .../qwik_core__test__example_jsx.snap | 6 +- ...core__test__example_jsx_import_source.snap | 9 +- .../qwik_core__test__example_jsx_keyed.snap | 9 +- ...wik_core__test__example_jsx_keyed_dev.snap | 11 +- ...wik_core__test__example_jsx_listeners.snap | 54 +- ..._test__example_lightweight_functional.snap | 6 +- ...wik_core__test__example_manual_chunks.snap | 18 +- ...wik_core__test__example_multi_capture.snap | 10 +- ..._core__test__example_mutable_children.snap | 3 +- ...wik_core__test__example_noop_dev_mode.snap | 38 +- ...ore__test__example_of_synchronous_qrl.snap | 8 +- ...test__example_optimization_issue_3542.snap | 20 +- ...test__example_optimization_issue_3561.snap | 10 +- ...test__example_optimization_issue_3795.snap | 10 +- ...test__example_optimization_issue_4386.snap | 7 +- ...re__test__example_parsed_inlined_qrls.snap | 18 +- ...ore__test__example_preserve_filenames.snap | 10 +- ...__example_preserve_filenames_segments.snap | 12 +- .../qwik_core__test__example_prod_node.snap | 20 +- ...ore__test__example_props_optimization.snap | 74 +- ...ik_core__test__example_props_wrapping.snap | 9 +- ...k_core__test__example_props_wrapping2.snap | 9 +- ...test__example_props_wrapping_children.snap | 9 +- ...est__example_props_wrapping_children2.snap | 9 +- ...wik_core__test__example_qwik_conflict.snap | 24 +- .../qwik_core__test__example_qwik_react.snap | 9 +- ...core__test__example_qwik_react_inline.snap | 127 +- ...ore__test__example_qwik_router_client.snap | 4183 ++++++++++++++++ ...ore__test__example_qwik_router_inline.snap | 4325 +++++++++++------ ...__test__example_reg_ctx_name_segments.snap | 13 +- ...example_reg_ctx_name_segments_hoisted.snap | 4 +- ...example_reg_ctx_name_segments_inlined.snap | 10 +- ...k_core__test__example_renamed_exports.snap | 6 +- ...t__example_segment_variable_migration.snap | 12 +- ..._self_referential_component_migration.snap | 255 + .../qwik_core__test__example_server_auth.snap | 13 +- .../qwik_core__test__example_spread_jsx.snap | 6 +- ...core__test__example_strip_client_code.snap | 26 +- ...e__test__example_strip_exports_unused.snap | 9 +- ...ore__test__example_strip_exports_used.snap | 13 +- ...core__test__example_strip_server_code.snap | 22 +- ...ore__test__example_transpile_jsx_only.snap | 10 +- ...core__test__example_transpile_ts_only.snap | 10 +- .../qwik_core__test__example_ts_enums.snap | 9 +- ...re__test__example_ts_enums_issue_1341.snap | 9 +- ...__test__example_ts_enums_no_transpile.snap | 9 +- ...core__test__example_use_client_effect.snap | 6 +- ..._core__test__example_use_optimization.snap | 10 +- ..._core__test__example_use_server_mount.snap | 18 +- .../qwik_core__test__example_with_style.snap | 13 +- ...qwik_core__test__example_with_tagname.snap | 13 +- ...core__test__hoisted_fn_signal_in_loop.snap | 8 +- .../qwik_core__test__impure_template_fns.snap | 8 +- ...ifier_reference_when_hoisted_snapshot.snap | 29 + .../snapshots/qwik_core__test__issue_150.snap | 9 +- .../qwik_core__test__issue_5008.snap | 8 +- .../qwik_core__test__issue_7216_add_test.snap | 16 +- .../snapshots/qwik_core__test__issue_964.snap | 9 +- .../qwik_core__test__lib_mode_fn_signal.snap | 8 +- .../qwik_core__test__recursive_component.snap | 389 ++ .../qwik_core__test__relative_paths.snap | 16 +- .../qwik_core__test__rename_builder_io.snap | 16 +- ...test__root_level_self_referential_qrl.snap | 72 + ...oot_level_self_referential_qrl_inline.snap | 62 + ...core__test__should_convert_jsx_events.snap | 34 +- ...core__test__should_convert_rest_props.snap | 8 +- ...k_core__test__should_destructure_args.snap | 9 +- ...act_multiple_qrls_with_item_and_index.snap | 20 +- ...s_with_item_and_index_and_capture_ref.snap | 8 +- ...core__test__should_extract_single_qrl.snap | 8 +- ...re__test__should_extract_single_qrl_2.snap | 6 +- ..._should_extract_single_qrl_with_index.snap | 8 +- ...act_single_qrl_with_nested_components.snap | 17 +- ...uld_handle_dangerously_set_inner_html.snap | 6 +- ...ld_make_component_jsx_split_with_bind.snap | 8 +- ...mark_props_as_var_props_for_inner_cmp.snap | 12 +- ...ld_merge_attributes_with_spread_props.snap | 8 +- ...es_with_spread_props_before_and_after.snap | 8 +- ...hould_merge_bind_checked_and_on_input.snap | 12 +- ..._should_merge_bind_value_and_on_input.snap | 12 +- ...hould_merge_on_input_and_bind_checked.snap | 12 +- ..._should_merge_on_input_and_bind_value.snap | 12 +- ...__should_move_bind_value_to_var_props.snap | 12 +- ...d_to_iteration_variables_to_var_props.snap | 8 +- ...enerate_conflicting_props_identifiers.snap | 2 +- ...nd_checked_in_var_props_for_jsx_split.snap | 8 +- ...bind_value_in_var_props_for_jsx_split.snap | 8 +- ..._not_transform_events_on_non_elements.snap | 18 +- .../qwik_core__test__should_not_wrap_fn.snap | 8 +- ...rap_ternary_function_operator_with_fn.snap | 9 +- ...__should_not_wrap_var_template_string.snap | 13 +- ...core__test__should_split_spread_props.snap | 9 +- ...lit_spread_props_with_additional_prop.snap | 9 +- ...it_spread_props_with_additional_prop2.snap | 9 +- ...it_spread_props_with_additional_prop3.snap | 9 +- ...it_spread_props_with_additional_prop4.snap | 8 +- ...it_spread_props_with_additional_prop5.snap | 13 +- ...oped_variables_and_item_index_in_loop.snap | 15 +- ...nsform_block_scoped_variables_in_loop.snap | 15 +- ...nsform_component_with_normal_function.snap | 17 +- ...orm_event_names_without_jsx_transpile.snap | 22 +- ...ould_transform_handler_in_for_of_loop.snap | 15 +- ...capturing_cross_scope_in_nested_loops.snap | 8 +- ...tiple_handler_with_different_captures.snap | 20 +- ...oped_variables_and_item_index_in_loop.snap | 15 +- ...ltiple_block_scoped_variables_in_loop.snap | 15 +- ...uld_transform_multiple_event_handlers.snap | 23 +- ...ansform_multiple_event_handlers_case2.snap | 23 +- ...__test__should_transform_nested_loops.snap | 13 +- ...ops_handler_captures_only_inner_scope.snap | 15 +- ..._transform_qrls_in_ternary_expression.snap | 8 +- ...one_handler_with_captures_one_without.snap | 20 +- ...ted_loops_handler_captures_outer_only.snap | 8 +- ...pturing_different_block_scope_in_loop.snap | 20 +- .../qwik_core__test__should_work.snap | 96 + ...ould_wrap_inner_inline_component_prop.snap | 9 +- ...d_wrap_logical_expression_in_template.snap | 8 +- ...st__should_wrap_object_with_fn_signal.snap | 8 +- ...uld_wrap_prop_from_destructured_array.snap | 12 +- ...e__test__should_wrap_store_expression.snap | 8 +- ...p_type_asserted_variables_in_template.snap | 9 +- ...wik_core__test__support_windows_paths.snap | 9 +- .../qwik_core__test__ternary_prop.snap | 8 +- ...__test__transform_qrl_in_regular_prop.snap | 13 +- packages/qwik/src/optimizer/core/src/test.rs | 436 +- .../qwik/src/optimizer/core/src/transform.rs | 1060 +++- packages/qwik/src/server/platform.unit.ts | 2 +- .../qwik/src/testing/rendering.unit-util.tsx | 14 +- starters/dev-server.ts | 73 +- 199 files changed, 14450 insertions(+), 3801 deletions(-) create mode 100644 .changeset/big-rocks-roll.md create mode 100644 .changeset/big-rocks-rumble.md create mode 100644 .changeset/big-rocks-start.md create mode 100644 packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__component_level_self_referential_qrl.snap create mode 100644 packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_router_client.snap create mode 100644 packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_self_referential_component_migration.snap create mode 100644 packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__inlined_qrl_uses_identifier_reference_when_hoisted_snapshot.snap create mode 100644 packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__recursive_component.snap create mode 100644 packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__root_level_self_referential_qrl.snap create mode 100644 packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__root_level_self_referential_qrl_inline.snap create mode 100644 packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_work.snap diff --git a/.changeset/big-rocks-roll.md b/.changeset/big-rocks-roll.md new file mode 100644 index 00000000000..29146c44013 --- /dev/null +++ b/.changeset/big-rocks-roll.md @@ -0,0 +1,5 @@ +--- +'@qwik.dev/core': minor +--- + +FEAT: The optimizer now hoists QRLs without captures to the module scope. This means that only one instance of the QRL will be created. diff --git a/.changeset/big-rocks-rumble.md b/.changeset/big-rocks-rumble.md new file mode 100644 index 00000000000..0a96a3f342c --- /dev/null +++ b/.changeset/big-rocks-rumble.md @@ -0,0 +1,5 @@ +--- +'@qwik.dev/core': minor +--- + +FEAT: The optimizer will now extract captures from QRL event handlers and move them to their string tag. This allows moving the QRL to the module scope, giving better performance. diff --git a/.changeset/big-rocks-start.md b/.changeset/big-rocks-start.md new file mode 100644 index 00000000000..152302a171e --- /dev/null +++ b/.changeset/big-rocks-start.md @@ -0,0 +1,5 @@ +--- +'@qwik.dev/core': minor +--- + +FEAT: The optimizer can now handle self-references. This means that e.g. an `AsyncSignal` can write to itself. diff --git a/AGENTS.md b/AGENTS.md index 8eed095a479..67cfb0bd393 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -40,25 +40,25 @@ Prefer `pnpm build --qwik --qwikrouter --dev` to build qwik and qwik-city faster ## Key Commands -| Task | Command | Notes | -| ------------------------ | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Install** | `pnpm install` | | -| **Build (no Rust)** | `pnpm build.local` | For a fresh start | -| **Build (with Rust)** | `pnpm build.full` | Only for optimizer changes | -| **Build core only** | `pnpm build.core` | Fast — just Qwik + Router + types | -| **Dev rebuild** | `pnpm build --dev --qwik --qwikrouter` | Very fast iterative rebuild | -| **Watch mode** | `pnpm build.watch` | Rebuilds on change | -| **Unit tests** | `pnpm vitest run` | Vitest — runs `packages/**/*.unit.{ts,tsx}` and `*.spec.{ts,tsx}`, or specify a single file. Add `-u` to update snapshots. **NEVER use `pnpm test.unit`** | -| **E2E tests (Chromium)** | `pnpm test.e2e.chromium` | Playwright - always run the dev rebuild first! | -| **E2E tests (Router)** | `pnpm test.e2e.router` | Router-specific E2E - always run the dev rebuild first! | -| **Lint** | `pnpm lint` | ESLint + Prettier + Rust lint | -| **Lint fix** | `pnpm lint.fix` | Auto-fix ESLint issues | -| **Format** | `pnpm fmt` | Prettier + syncpack | -| **Type check** | `pnpm tsc.check` | Full TypeScript check | -| **Update API docs** | `pnpm api.update` | Regenerates public API `.md` files | -| **Create changeset** | `pnpm change` | Interactive — creates `.changeset/*.md` | -| **Dev server** | `pnpm serve` | Port 3300 | -| **Docs dev** | `pnpm docs.dev` | Documentation site | +| Task | Command | Notes | +| ------------------------ | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **Install** | `pnpm install` | | +| **Build (no Rust)** | `pnpm build.local` | For a fresh start | +| **Build (with Rust)** | `pnpm build.full` | Only for optimizer changes | +| **Build core only** | `pnpm build.core` | Fast — just Qwik + Router + types | +| **Dev rebuild** | `pnpm build.core.dev` | Very fast iterative rebuild | +| **Watch mode** | `pnpm build.watch` | Rebuilds on change | +| **Unit tests** | `pnpm vitest run` | Vitest — runs `packages/**/*.unit.{ts,tsx}` and `*.spec.{ts,tsx}`, or specify a single file. Add `-u` to update snapshots. **NEVER use `pnpm test.unit`** | +| **E2E tests (Chromium)** | `pnpm test.e2e.chromium` | Playwright - always run the dev rebuild first! | +| **E2E tests (Router)** | `pnpm test.e2e.router` | Router-specific E2E - always run the dev rebuild first! | +| **Lint** | `pnpm lint` | ESLint + Prettier + Rust lint | +| **Lint fix** | `pnpm lint.fix` | Auto-fix ESLint issues | +| **Format** | `pnpm fmt` | Prettier + syncpack | +| **Type check** | `pnpm tsc.check` | Full TypeScript check | +| **Update API docs** | `pnpm api.update` | Regenerates public API `.md` files | +| **Create changeset** | `pnpm change` | Interactive — creates `.changeset/*.md` | +| **Dev server** | `pnpm serve` | Port 3300 | +| **Docs dev** | `pnpm docs.dev` | Documentation site | ### Running a Single Test File diff --git a/Cargo.lock b/Cargo.lock index 496b95a8400..b7ae93a893d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1002,6 +1002,7 @@ dependencies = [ "anyhow", "base64", "derivative", + "indexmap", "insta", "lazy_static", "path-slash", diff --git a/package.json b/package.json index f8f2e6a3c89..15011ed4460 100644 --- a/package.json +++ b/package.json @@ -189,6 +189,7 @@ "build.cli": "node --require ./scripts/runBefore.ts scripts/index.ts --cli --dev", "build.cli.prod": "node --require ./scripts/runBefore.ts scripts/index.ts --cli", "build.core": "node --require ./scripts/runBefore.ts scripts/index.ts --tsc --qwik --insights --qwikrouter --api --platform-binding", + "build.core.dev": "node --require ./scripts/runBefore.ts scripts/index.ts --qwik --insights --qwikrouter --platform-binding --dev", "build.eslint": "node --require ./scripts/runBefore.ts scripts/index.ts --eslint", "build.full": "node --require ./scripts/runBefore.ts scripts/index.ts --tsc --tsc-docs --qwik --insights --supabaseauthhelpers --api --eslint --qwikrouter --qwikworker --qwikreact --cli --platform-binding --wasm", "build.local": "node --require ./scripts/runBefore.ts scripts/index.ts --tsc --tsc-docs --qwik --insights --supabaseauthhelpers --api --eslint --qwikrouter --qwikworker --qwikreact --cli --platform-binding-wasm-copy", diff --git a/packages/docs/src/routes/docs/(qwik)/core/state/index.mdx b/packages/docs/src/routes/docs/(qwik)/core/state/index.mdx index 8cf428f5cda..3c23c03febd 100644 --- a/packages/docs/src/routes/docs/(qwik)/core/state/index.mdx +++ b/packages/docs/src/routes/docs/(qwik)/core/state/index.mdx @@ -352,20 +352,18 @@ As we see in the example above, `useAsync$()` returns an `AsyncSignal` object #### Channel example In this example, we use `useAsync$()` to get updates from a server using Server-Sent Events (SSE). Note that it writes to its own value, updating its subscribers. -To be able to refer to itself, the signal needs to be in an object. ```tsx import { component$, useAsync$ } from '@qwik.dev/core'; export default component$(() => { - const _ref = {} as { state: AsyncSignal }; - _ref.state = useAsync$( + const state = useAsync$( ({ track, abortSignal }) => { const url = new URL('/api/state-channel'); const eventSource = new EventSource(url); eventSource.onmessage = (event) => { - _ref.state.value = event.data; + state.value = event.data; }; abortSignal.addEventListener('abort', () => { @@ -377,7 +375,6 @@ export default component$(() => { // Close the channel as soon as there are no subscribers { eagerCleanup: true } ); - const state = _ref.state; return
Current state is: {state.value}
; }); diff --git a/packages/qwik/src/core/shared/platform/platform.unit.ts b/packages/qwik/src/core/shared/platform/platform.unit.ts index 3e7b80146e6..00f015b97bc 100644 --- a/packages/qwik/src/core/shared/platform/platform.unit.ts +++ b/packages/qwik/src/core/shared/platform/platform.unit.ts @@ -46,7 +46,7 @@ describe('core platform', () => { didThrow = true; // The error should be a QError with code for dynamic import failed expect(e.message).toMatch(/Code\(Q\d+\)/); - expect(e.message).toContain('Dynamic import not found'); + expect(e.message).toContain(`Dynamic import ${symbolName} not found`); } expect(didThrow).toBe(true); }); diff --git a/packages/qwik/src/core/tests/render-api.spec.tsx b/packages/qwik/src/core/tests/render-api.spec.tsx index 842de236c70..fa266c865ec 100644 --- a/packages/qwik/src/core/tests/render-api.spec.tsx +++ b/packages/qwik/src/core/tests/render-api.spec.tsx @@ -105,16 +105,16 @@ const Counter = componentQrl( ); - }, 's_counter') + }, 's_counter1') ); const renderToStringAndSetPlatform = async (jsx: JSXOutput, opts: RenderToStringOptions = {}) => { @@ -217,9 +217,9 @@ describe('render api', () => { ); }); @@ -288,7 +288,7 @@ describe('render api', () => { {JSON.stringify(obj)}
); - }, 's_counter') + }, 's_counter2') ); const result = await renderToStringAndSetPlatform(, { containerTagName: 'div', @@ -520,7 +520,9 @@ describe('render api', () => { const CounterDerived = component$((props: { initial: number }) => { const count = useSignal(props.initial); return ( - ); diff --git a/packages/qwik/src/optimizer/core/Cargo.toml b/packages/qwik/src/optimizer/core/Cargo.toml index 125c9062bd2..595773617f1 100644 --- a/packages/qwik/src/optimizer/core/Cargo.toml +++ b/packages/qwik/src/optimizer/core/Cargo.toml @@ -28,6 +28,7 @@ anyhow = "1.0.70" derivative = "2.2.0" rayon = "1.7.0" path-slash="0.2.1" +indexmap = "2.7.1" [dev-dependencies] insta = "1.29.0" diff --git a/packages/qwik/src/optimizer/core/src/code_move.rs b/packages/qwik/src/optimizer/core/src/code_move.rs index a06a4a4dbf5..f4feb8d5935 100644 --- a/packages/qwik/src/optimizer/core/src/code_move.rs +++ b/packages/qwik/src/optimizer/core/src/code_move.rs @@ -1,15 +1,20 @@ -use crate::collector::{new_ident_from_id, GlobalCollect, Id, ImportKind}; +use crate::collector::{ + collect_from_pat, new_ident_from_id, GlobalCollect, Id, Import, ImportKind, +}; use crate::parse::PathData; use crate::transform::create_synthetic_named_import; use crate::words::*; use anyhow::Error; -use std::collections::BTreeMap; +use indexmap::IndexMap; +use std::collections::{BTreeMap, HashMap, HashSet}; use swc_atoms::Atom; use swc_common::comments::{SingleThreadedComments, SingleThreadedCommentsMap}; +use swc_common::Spanned; use swc_common::DUMMY_SP; use swc_ecmascript::ast; use swc_ecmascript::utils::private_ident; +use swc_ecmascript::visit::{noop_visit_type, Fold, FoldWith, Visit, VisitWith}; macro_rules! id { ($ident: expr) => { @@ -17,6 +22,86 @@ macro_rules! id { }; } +/// Shared helper to build an ImportDecl from an Import and local Id +fn build_import_decl(import: &Import, local_id: &Id) -> ast::ModuleItem { + let specifier = match import.kind { + ImportKind::Named => ast::ImportSpecifier::Named(ast::ImportNamedSpecifier { + is_type_only: false, + span: DUMMY_SP, + imported: if import.specifier == local_id.0 { + None + } else { + Some(ast::ModuleExportName::Ident(ast::Ident::new( + import.specifier.clone(), + DUMMY_SP, + Default::default(), + ))) + }, + local: new_ident_from_id(local_id), + }), + ImportKind::Default => ast::ImportSpecifier::Default(ast::ImportDefaultSpecifier { + span: DUMMY_SP, + local: new_ident_from_id(local_id), + }), + ImportKind::All => ast::ImportSpecifier::Namespace(ast::ImportStarAsSpecifier { + span: DUMMY_SP, + local: new_ident_from_id(local_id), + }), + }; + + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::Import(ast::ImportDecl { + span: DUMMY_SP, + type_only: false, + with: import.asserts.clone(), + phase: Default::default(), + src: Box::new(ast::Str { + span: DUMMY_SP, + value: import.source.clone(), + raw: None, + }), + specifiers: vec![specifier], + })) +} + +fn resolve_import_for_id( + global_imports: &IndexMap, + explicit_imports: &IndexMap, + id: &Id, +) -> Option { + if let Some(import) = global_imports.get(id) { + return Some(import.clone()); + } + if let Some(import) = explicit_imports.get(id) { + return Some(import.clone()); + } + + let mut global_matches = global_imports + .iter() + .filter(|(candidate, _)| candidate.0 == id.0) + .map(|(_, import)| import.clone()); + if let Some(first) = global_matches.next() { + if global_matches.next().is_none() { + return Some(first); + } + } + + let mut explicit_matches = explicit_imports + .iter() + .filter(|(candidate, _)| candidate.0 == id.0) + .map(|(_, import)| import.clone()); + if let Some(first) = explicit_matches.next() { + if explicit_matches.next().is_none() { + return Some(first); + } + } + + None +} + +fn resolve_export_for_id(global: &GlobalCollect, id: &Id) -> Option> { + global.resolve_export_name_for_id(id) +} + pub struct NewModuleCtx<'a> { pub expr: Box, pub path: &'a PathData, @@ -31,6 +116,7 @@ pub struct NewModuleCtx<'a> { pub trailing_comments: SingleThreadedCommentsMap, pub extra_top_items: &'a BTreeMap, pub migrated_root_vars: &'a [ast::ModuleItem], + pub explicit_imports: &'a IndexMap, } pub fn new_module(ctx: NewModuleCtx) -> Result<(ast::Module, SingleThreadedComments), Error> { @@ -56,85 +142,6 @@ pub fn new_module(ctx: NewModuleCtx) -> Result<(ast::Module, SingleThreadedComme None }; - for id in ctx.local_idents { - if let Some(import) = ctx.global.imports.get(id) { - let specifier = match import.kind { - ImportKind::Named => ast::ImportSpecifier::Named(ast::ImportNamedSpecifier { - is_type_only: false, - span: DUMMY_SP, - imported: if import.specifier == id.0 { - None - } else { - Some(ast::ModuleExportName::Ident(ast::Ident::new( - import.specifier.clone(), - DUMMY_SP, - Default::default(), - ))) - }, - local: new_ident_from_id(id), - }), - ImportKind::Default => ast::ImportSpecifier::Default(ast::ImportDefaultSpecifier { - span: DUMMY_SP, - local: new_ident_from_id(id), - }), - ImportKind::All => ast::ImportSpecifier::Namespace(ast::ImportStarAsSpecifier { - span: DUMMY_SP, - local: new_ident_from_id(id), - }), - }; - module - .body - .push(ast::ModuleItem::ModuleDecl(ast::ModuleDecl::Import( - ast::ImportDecl { - span: DUMMY_SP, - type_only: false, - with: import.asserts.clone(), - phase: Default::default(), - src: Box::new(ast::Str { - span: DUMMY_SP, - value: import.source.clone(), - raw: None, - }), - specifiers: vec![specifier], - }, - ))); - } else if let Some(export) = ctx.global.exports.get(id) { - let filename = if ctx.explicit_extensions { - &ctx.path.file_name - } else { - &ctx.path.file_stem - }; - let imported = export.as_ref().map(|e| { - ast::ModuleExportName::Ident(ast::Ident::new( - e.clone(), - DUMMY_SP, - Default::default(), - )) - }); - module - .body - .push(ast::ModuleItem::ModuleDecl(ast::ModuleDecl::Import( - ast::ImportDecl { - span: DUMMY_SP, - type_only: false, - with: None, - phase: Default::default(), - src: Box::new(ast::Str { - span: DUMMY_SP, - value: format!("./{}", filename).into(), - raw: None, - }), - specifiers: vec![ast::ImportSpecifier::Named(ast::ImportNamedSpecifier { - is_type_only: false, - span: DUMMY_SP, - imported, - local: new_ident_from_id(id), - })], - }, - ))); - } - } - let expr = if let Some(_captures) = _captures { Box::new(transform_function_expr( *ctx.expr, @@ -145,15 +152,942 @@ pub fn new_module(ctx: NewModuleCtx) -> Result<(ast::Module, SingleThreadedComme ctx.expr }; - // Add migrated root variables first (before extra_top_items) - module.body.extend(ctx.migrated_root_vars.iter().cloned()); + // Hoist qrl() calls from the expression to module scope + let (expr, hoisted_qrls) = hoist_qrls_from_expr(*expr); + + // Note: QRLs use `var` declarations which hoist, so forward references are OK + // No filtering needed - duplicates are already handled by BTreeMap keys + + // Fix self-referential variable declarations within function bodies + let expr = fix_self_referential_vars_in_function(expr); + + let expr = Box::new(expr); + + let extra_top_items = collect_needed_extra_top_items( + ctx.extra_top_items, + ctx.local_idents, + ctx.scoped_idents, + ctx.migrated_root_vars, + &expr, + &hoisted_qrls.values().cloned().collect::>(), + ); + + let mut combined_local_idents: Vec = ctx.local_idents.to_vec(); + let mut local_idents_set: HashSet = ctx.local_idents.iter().cloned().collect(); + let mut hoisted_idents: HashSet = HashSet::new(); + for item in hoisted_qrls.values() { + collect_module_item_idents(item, &mut hoisted_idents); + } + for item in &extra_top_items { + collect_module_item_idents(item, &mut hoisted_idents); + } + for item in ctx.migrated_root_vars { + collect_module_item_idents(item, &mut hoisted_idents); + } + let mut hoisted_idents_vec: Vec = hoisted_idents + .into_iter() + .filter(|id| !local_idents_set.contains(id)) + .collect(); + hoisted_idents_vec.sort_by(|a, b| a.0.cmp(&b.0)); + for id in hoisted_idents_vec { + local_idents_set.insert(id.clone()); + combined_local_idents.push(id); + } + + // Generate imports with collision detection and renaming + // First pass: collect all imports and explicit import requirements + let mut seen_import_names: HashMap> = HashMap::new(); + + for id in &combined_local_idents { + // Check in priority order: exact match first, then unique symbol fallback + let import_opt = resolve_import_for_id(&ctx.global.imports, ctx.explicit_imports, id); + + if let Some(import) = import_opt { + seen_import_names + .entry(id.0.clone()) + .or_default() + .push((id.clone(), import)); + } else if ctx.global.has_export_symbol(&id.0) { + // Only import from parent if it's actually exported there + if let Some(export) = resolve_export_for_id(ctx.global, id) { + // Handle exports from parent module + let filename = if ctx.explicit_extensions { + &ctx.path.file_name + } else { + &ctx.path.file_stem + }; + let imported = export.as_ref().map(|e| { + ast::ModuleExportName::Ident(ast::Ident::new( + e.clone(), + DUMMY_SP, + Default::default(), + )) + }); + module + .body + .push(ast::ModuleItem::ModuleDecl(ast::ModuleDecl::Import( + ast::ImportDecl { + span: DUMMY_SP, + type_only: false, + with: None, + phase: Default::default(), + src: Box::new(ast::Str { + span: DUMMY_SP, + value: format!("./{}", filename).into(), + raw: None, + }), + specifiers: vec![ast::ImportSpecifier::Named( + ast::ImportNamedSpecifier { + is_type_only: false, + span: DUMMY_SP, + imported, + local: new_ident_from_id(id), + }, + )], + }, + ))); + } + } + } + + // Second pass: detect collisions and generate imports with stable ordering + // A collision occurs when the same local name is needed for imports from different sources + let mut sorted_import_names: Vec<_> = seen_import_names.into_iter().collect(); + sorted_import_names.sort_by(|a, b| a.0.cmp(&b.0)); + + for (local_name, imports) in sorted_import_names { + if imports.len() == 1 { + // No collision, generate import directly + let (id, import) = &imports[0]; + module.body.push(build_import_decl(import, id)); + } else { + // Collision: multiple sources for same local name - rename them + for (index, (id, import)) in imports.iter().enumerate() { + // Rename to make unique: original_name, original_name_1, original_name_2, ... + let renamed_local = if index == 0 { + local_name.clone() + } else { + Atom::from(format!("{}_{}", local_name, index)) + }; + let renamed_id = (renamed_local, id.1); + module.body.push(build_import_decl(import, &renamed_id)); + } + } + } + + let extra_top_items = collect_needed_extra_top_items( + ctx.extra_top_items, + ctx.local_idents, + ctx.scoped_idents, + ctx.migrated_root_vars, + &expr, + &hoisted_qrls.values().cloned().collect::>(), + ); + + // CRITICAL: Collect symbols from imports already added to module.body FIRST + // This ensures we filter out any items from extra_top_items that would conflict + let mut already_imported_syms: HashSet = HashSet::new(); + for item in &module.body { + if let ast::ModuleItem::ModuleDecl(ast::ModuleDecl::Import(import_decl)) = item { + for specifier in &import_decl.specifiers { + match specifier { + ast::ImportSpecifier::Named(named) => { + already_imported_syms.insert(named.local.sym.clone()); + } + ast::ImportSpecifier::Default(default) => { + already_imported_syms.insert(default.local.sym.clone()); + } + ast::ImportSpecifier::Namespace(ns) => { + already_imported_syms.insert(ns.local.sym.clone()); + } + } + } + } + } + + // Collect symbols already defined in hoisted_qrls and migrated_root_vars + let mut already_defined_syms: HashSet = already_imported_syms.clone(); + for item in hoisted_qrls.values() { + let mut item_defs = HashSet::new(); + collect_defined_idents(item, &mut item_defs); + already_defined_syms.extend(item_defs.into_iter().map(|id| id.0)); + } + for item in ctx.migrated_root_vars { + let mut item_defs = HashSet::new(); + collect_defined_idents(item, &mut item_defs); + already_defined_syms.extend(item_defs.into_iter().map(|id| id.0)); + } + // Also collect imported symbols from ctx.global.imports + // These are symbols that are imported globally and should not be redeclared in segment modules + for id in ctx.global.imports.keys() { + already_defined_syms.insert(id.0.clone()); + } + + // Deduplicate extra_top_items by symbol name before partitioning + // Use only symbol names (Atom) since SyntaxContext can vary + // Also filter out items that duplicate definitions already in: + // - hoisted_qrls + // - migrated_root_vars + // - ctx.global.imports (globally imported symbols that shouldn't be redeclared) + let mut extra_top_seen_syms: HashSet = already_defined_syms.clone(); + let mut deduplicated_extra: Vec = Vec::new(); + for item in extra_top_items { + let mut item_defs = HashSet::new(); + collect_defined_idents(&item, &mut item_defs); + + let is_dup = item_defs + .iter() + .any(|id| extra_top_seen_syms.contains(&id.0)); + if !is_dup { + extra_top_seen_syms.extend(item_defs.into_iter().map(|id| id.0)); + deduplicated_extra.push(item); + } + } + + // Separate imports from non-imports to ensure all imports stay at the top + let (extra_imports, extra_non_imports): (Vec<_>, Vec<_>) = + deduplicated_extra.into_iter().partition(|item| { + matches!( + item, + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::Import(_)) + ) + }); + + // Add imports from extra_top_items + module.body.extend(extra_imports); + + // Combine hoisted QRLs, migrated root variables, AND extra non-imports for joint sorting + // This ensures correct dependency ordering between all declarations + let mut combined_items: Vec = hoisted_qrls.into_values().collect(); + combined_items.extend(ctx.migrated_root_vars.iter().cloned()); + combined_items.extend(extra_non_imports); + + // Apply topological sort to all items together to handle cross-dependencies + let reorganized_combined = order_items_by_dependency(combined_items); + + // DISABLED: Bypass both reorganization and collection to isolate the issue + // let inlined_qrl_refs = collect_inlined_qrl_references(&reorganized_combined); + // let reorganized_combined = + // reorganize_items_for_inlined_qrl(&reorganized_combined, &inlined_qrl_refs); + + // Collect defined identifiers from sorted combined items (by full Id) + let mut defined_ids: HashSet = HashSet::new(); + for item in &reorganized_combined { + collect_defined_idents(item, &mut defined_ids); + } + + // Add all sorted combined items (hoisted QRLs + migrated root variables + extra non-imports) + module.body.extend(reorganized_combined); - module.body.extend(ctx.extra_top_items.values().cloned()); + // Apply final forward reference constraint: + // Ensure NO item references an identifier defined later in the module + // DISABLED: Testing if this is the source of the issue + // module.body = ensure_inlined_qrl_after_refs(module.body); + + // Final AGGRESSIVE deduplication: remove ANY duplicate symbols from module body + // This catches duplicates across imports, const declarations, and any other declarations + // Use ONLY symbol name (Atom) for comparison to handle SyntaxContext variations + let mut final_seen_syms: HashSet = HashSet::new(); + let mut final_body = Vec::new(); + for item in module.body { + let mut item_syms = HashSet::new(); + + // Extract all symbols defined or imported by this item + match &item { + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::Import(import_decl)) => { + // Extract imported symbol names + for spec in &import_decl.specifiers { + match spec { + ast::ImportSpecifier::Named(n) => { + item_syms.insert(n.local.sym.clone()); + } + ast::ImportSpecifier::Default(d) => { + item_syms.insert(d.local.sym.clone()); + } + ast::ImportSpecifier::Namespace(ns) => { + item_syms.insert(ns.local.sym.clone()); + } + } + } + } + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(var))) => { + // Extract declared variable names + for decl in &var.decls { + if let ast::Pat::Ident(ident) = &decl.name { + item_syms.insert(ident.id.sym.clone()); + } + } + } + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::ExportDecl(export)) => { + // Extract exported declaration names + match &export.decl { + ast::Decl::Var(var) => { + for decl in &var.decls { + if let ast::Pat::Ident(ident) = &decl.name { + item_syms.insert(ident.id.sym.clone()); + } + } + } + ast::Decl::Fn(func) => { + item_syms.insert(func.ident.sym.clone()); + } + _ => {} + } + } + _ => {} + } + + // Check if any symbol from this item was already seen + let is_duplicate = item_syms.iter().any(|sym| final_seen_syms.contains(sym)); + if !is_duplicate { + final_seen_syms.extend(item_syms); + final_body.push(item); + } + } + module.body = final_body; module.body.push(create_named_export(expr, ctx.name)); Ok((module, comments)) } +fn collect_needed_extra_top_items( + extra_top_items: &BTreeMap, + local_idents: &[Id], + scoped_idents: &[Id], + migrated_root_vars: &[ast::ModuleItem], + expr: &ast::Expr, + hoisted_items: &[ast::ModuleItem], +) -> Vec { + if extra_top_items.is_empty() { + return Vec::new(); + } + + let mut needed: HashSet = local_idents.iter().cloned().collect(); + let mut needed_syms: HashSet = needed.iter().map(|id| id.0.clone()).collect(); + needed.extend(scoped_idents.iter().cloned()); + needed_syms.extend(scoped_idents.iter().map(|id| id.0.clone())); + for item in migrated_root_vars { + collect_module_item_idents(item, &mut needed); + } + needed_syms.extend(needed.iter().map(|id| id.0.clone())); + // Also collect identifiers from the main expression + collect_expr_idents(expr, &mut needed); + needed_syms.extend(needed.iter().map(|id| id.0.clone())); + // And from hoisted QRL declarations (for qrlDEV/qrl imports) + for item in hoisted_items { + collect_module_item_idents(item, &mut needed); + } + needed_syms.extend(needed.iter().map(|id| id.0.clone())); + + let mut included: HashSet = HashSet::new(); + let mut changed = true; + while changed { + changed = false; + for (id, item) in extra_top_items.iter() { + let is_needed = needed.contains(id) || needed_syms.contains(&id.0); + if is_needed && included.insert(id.clone()) { + let before_ids = needed.len(); + let before_syms = needed_syms.len(); + collect_module_item_idents(item, &mut needed); + needed_syms.extend(needed.iter().map(|local_id| local_id.0.clone())); + changed = needed.len() != before_ids || needed_syms.len() != before_syms; + } + } + } + + let mut result: Vec<_> = extra_top_items + .iter() + .filter(|&(id, _)| included.contains(id)) + .map(|(_, item)| item.clone()) + .collect(); + + // Deduplicate by symbol name to handle cases where the same symbol + // appears in extra_top_items with different SyntaxContexts + let mut seen_syms: HashSet = HashSet::new(); + let mut deduplicated_result: Vec = Vec::new(); + for item in result { + let mut item_defs = HashSet::new(); + collect_defined_idents(&item, &mut item_defs); + + // Check if any defined symbol was already seen + let is_dup = item_defs.iter().any(|id| seen_syms.contains(&id.0)); + if !is_dup { + seen_syms.extend(item_defs.into_iter().map(|id| id.0)); + deduplicated_result.push(item); + } + } + result = deduplicated_result; + + // Sort by source position to preserve original declaration order + result.sort_by_key(|item| match item { + ast::ModuleItem::Stmt(stmt) => stmt.span().lo, + ast::ModuleItem::ModuleDecl(decl) => match decl { + ast::ModuleDecl::Import(d) => d.span.lo, + ast::ModuleDecl::ExportDecl(d) => d.span.lo, + ast::ModuleDecl::ExportNamed(d) => d.span.lo, + ast::ModuleDecl::ExportDefaultDecl(d) => d.span.lo, + ast::ModuleDecl::ExportDefaultExpr(d) => d.span.lo, + ast::ModuleDecl::ExportAll(d) => d.span.lo, + ast::ModuleDecl::TsImportEquals(d) => d.span.lo, + ast::ModuleDecl::TsExportAssignment(d) => d.span.lo, + ast::ModuleDecl::TsNamespaceExport(d) => d.span.lo, + }, + }); + + result +} + +fn collect_module_item_idents(item: &ast::ModuleItem, out: &mut HashSet) { + let mut collector = AnyIdentCollector::new(); + item.visit_with(&mut collector); + out.extend(collector.local_idents); +} + +fn collect_expr_idents(expr: &ast::Expr, out: &mut HashSet) { + let mut collector = AnyIdentCollector::new(); + expr.visit_with(&mut collector); + out.extend(collector.local_idents); +} + +fn collect_defined_idents(item: &ast::ModuleItem, out: &mut HashSet) { + match item { + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(var))) => { + for decl in &var.decls { + collect_pat_idents(&decl.name, out); + } + } + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::Import(import_decl)) => { + // Extract symbols defined by imports (the local names) + for specifier in &import_decl.specifiers { + match specifier { + ast::ImportSpecifier::Named(named) => { + out.insert(id!(named.local)); + } + ast::ImportSpecifier::Default(default) => { + out.insert(id!(default.local)); + } + ast::ImportSpecifier::Namespace(ns) => { + out.insert(id!(ns.local)); + } + } + } + } + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::ExportDecl(decl)) => match &decl.decl { + ast::Decl::Var(var) => { + for decl in &var.decls { + collect_pat_idents(&decl.name, out); + } + } + ast::Decl::Fn(func) => { + out.insert(id!(func.ident)); + } + _ => {} + }, + _ => {} + } +} + +fn collect_pat_idents(pat: &ast::Pat, out: &mut HashSet) { + if let ast::Pat::Ident(ident) = pat { + out.insert(id!(ident.id)); + } +} + +fn has_qrl_pattern(expr: &ast::Expr) -> bool { + match expr { + ast::Expr::Call(call) => { + // Check for $ suffixes (from source code) + if let ast::Callee::Expr(box ast::Expr::Ident(ident)) = &call.callee { + let name = ident.sym.as_ref(); + if name.ends_with('$') { + return true; + } + // Also check for QRL infrastructure functions created during transformation + if matches!( + name, + "componentQrl" | "qrl" | "inlinedQrl" | "inlinedQrlDev" + ) { + return true; + } + } + call.args.iter().any(|arg| has_qrl_pattern(&arg.expr)) + } + ast::Expr::Paren(paren) => has_qrl_pattern(&paren.expr), + _ => false, + } +} + +fn split_cyclic_var_decl(decl: &ast::VarDeclarator) -> Option> { + let ast::Pat::Ident(binding_ident) = &decl.name else { + return None; + }; + let init = decl.init.clone()?; + + let ident = binding_ident.id.clone(); + + // Create let declaration without initialization + let let_decl = ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(Box::new(ast::VarDecl { + span: swc_common::DUMMY_SP, + kind: ast::VarDeclKind::Let, + decls: vec![ast::VarDeclarator { + span: decl.span, + name: ast::Pat::Ident(ast::BindingIdent { + id: ident.clone(), + type_ann: None, + }), + init: None, + definite: false, + }], + declare: false, + ctxt: swc_common::SyntaxContext::empty(), + })))); + + // Create assignment statement + let assign_stmt = ast::ModuleItem::Stmt(ast::Stmt::Expr(ast::ExprStmt { + span: swc_common::DUMMY_SP, + expr: Box::new(ast::Expr::Assign(ast::AssignExpr { + span: swc_common::DUMMY_SP, + op: ast::AssignOp::Assign, + left: ast::AssignTarget::Simple(ast::SimpleAssignTarget::Ident(ast::BindingIdent { + id: ident, + type_ann: None, + })), + right: init, + })), + })); + + Some(vec![let_decl, assign_stmt]) +} + +fn order_items_by_dependency(items: Vec) -> Vec { + if items.len() < 2 { + return items; + } + + // Map symbol names to defining item indices (ignore SyntaxContext for matching) + let mut defined_by_name: HashMap = HashMap::new(); + let mut defines_by_item: Vec> = Vec::with_capacity(items.len()); + for (idx, item) in items.iter().enumerate() { + let mut defines = HashSet::new(); + collect_declared_idents(item, &mut defines); + let define_names: HashSet = defines.iter().map(|id| id.0.clone()).collect(); + for name in &define_names { + defined_by_name.entry(name.clone()).or_insert(idx); + } + defines_by_item.push(define_names); + } + + // Build dependency graph based on symbol names only + let mut deps_by_item: Vec> = vec![HashSet::new(); items.len()]; + for (idx, item) in items.iter().enumerate() { + let mut used = HashSet::new(); + collect_module_item_idents(item, &mut used); + let used_names: HashSet = used.iter().map(|id| id.0.clone()).collect(); + + // Remove self-definitions + let net_used_names: HashSet = used_names + .difference(&defines_by_item[idx]) + .cloned() + .collect(); + + for used_name in net_used_names { + if let Some(def_idx) = defined_by_name.get(&used_name) { + if *def_idx != idx { + deps_by_item[idx].insert(*def_idx); + } + } + } + } + + let mut in_degree = vec![0usize; items.len()]; + let mut dependents: Vec> = vec![Vec::new(); items.len()]; + for (idx, deps) in deps_by_item.iter().enumerate() { + in_degree[idx] = deps.len(); + for dep_idx in deps { + dependents[*dep_idx].push(idx); + } + } + + let mut ready: Vec = (0..items.len()).filter(|i| in_degree[*i] == 0).collect(); + ready.sort_unstable(); + let mut ordered: Vec = Vec::with_capacity(items.len()); + while let Some(idx) = ready.first().copied() { + ready.remove(0); + ordered.push(idx); + for dependent in &dependents[idx] { + in_degree[*dependent] = in_degree[*dependent].saturating_sub(1); + if in_degree[*dependent] == 0 { + ready.push(*dependent); + } + } + ready.sort_unstable(); + } + + if ordered.len() < items.len() { + let mut seen = vec![false; items.len()]; + for idx in &ordered { + seen[*idx] = true; + } + + // First, collect cyclic items and apply two-phase emission if they contain QRL patterns + let cyclic_items: Vec<_> = (0..items.len()) + .filter(|i| !seen[*i]) + .map(|i| items[i].clone()) + .collect(); + + let mut result: Vec<_> = ordered.into_iter().map(|idx| items[idx].clone()).collect(); + + for item in cyclic_items { + // For cyclic items with QRL patterns, apply two-phase emission to break the cycle + if let ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(var_decl))) = &item { + if var_decl.decls.len() == 1 { + if let Some(init) = &var_decl.decls[0].init { + if has_qrl_pattern(init) { + // Split into let + assign to break TDZ + if let Some(split_items) = split_cyclic_var_decl(&var_decl.decls[0]) { + result.extend(split_items); + continue; + } + } + } + } + } + result.push(item); + } + + return result; + } + + ordered.into_iter().map(|idx| items[idx].clone()).collect() +} + +fn collect_declared_idents(item: &ast::ModuleItem, out: &mut HashSet) { + match item { + ast::ModuleItem::Stmt(ast::Stmt::Decl(decl)) => { + collect_declared_idents_from_decl(decl, out) + } + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::ExportDecl(decl)) => { + collect_declared_idents_from_decl(&decl.decl, out); + } + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::ExportDefaultDecl(decl)) => { + if let ast::DefaultDecl::Fn(fn_decl) = &decl.decl { + if let Some(ident) = &fn_decl.ident { + out.insert(id!(ident)); + } + } + if let ast::DefaultDecl::Class(class_decl) = &decl.decl { + if let Some(ident) = &class_decl.ident { + out.insert(id!(ident)); + } + } + } + _ => {} + } +} + +// Filter out hoisted QRLs that reference identifiers already defined in the module +// This prevents forward reference errors for self-referential components +// Fix self-referential variable declarations in function bodies +// Transforms: const sig = useAsyncQrl(qrl(... [sig])) +// Into: const _ref = {}; _ref.sig = useAsyncQrl(qrl(... [_ref.sig])); const {sig} = _ref; +fn fix_self_referential_vars_in_function(expr: ast::Expr) -> ast::Expr { + match expr { + ast::Expr::Arrow(arrow) => ast::Expr::Arrow(fix_arrow_body_self_refs(arrow)), + ast::Expr::Fn(fn_expr) => ast::Expr::Fn(fix_fn_body_self_refs(fn_expr)), + other => other, + } +} + +fn fix_arrow_body_self_refs(mut arrow: ast::ArrowExpr) -> ast::ArrowExpr { + if let box ast::BlockStmtOrExpr::BlockStmt(block) = &mut arrow.body { + block.stmts = fix_stmts_self_refs(block.stmts.clone()); + } + arrow +} + +fn fix_fn_body_self_refs(mut fn_expr: ast::FnExpr) -> ast::FnExpr { + if let Some(body) = &mut fn_expr.function.body { + body.stmts = fix_stmts_self_refs(body.stmts.clone()); + } + fn_expr +} + +fn fix_stmts_self_refs(stmts: Vec) -> Vec { + let mut result = Vec::new(); + let temp_id = pick_shared_self_ref_ident(&stmts); + let mut emitted_shared_ref_decl = false; + + for stmt in stmts { + if let ast::Stmt::Decl(ast::Decl::Var(ref var_decl)) = stmt { + // Check if any declaration is self-referential + let has_self_ref = var_decl.decls.iter().any(|decl| { + if let ast::Pat::Ident(ident) = &decl.name { + if let Some(init) = &decl.init { + // Check if initializer references the variable being declared + let mut used = HashSet::new(); + collect_expr_idents(init, &mut used); + return used.iter().any(|used_id| used_id.0 == ident.id.sym); + } + } + false + }); + + if has_self_ref && var_decl.decls.len() == 1 { + // Transform using temporary object pattern + let decl = &var_decl.decls[0]; + if let (ast::Pat::Ident(ident), Some(init)) = (&decl.name, &decl.init) { + let var_name = &ident.id.sym; + + if !emitted_shared_ref_decl { + // const _ref = {} + result.push(ast::Stmt::Decl(ast::Decl::Var(Box::new(ast::VarDecl { + span: var_decl.span, + kind: ast::VarDeclKind::Const, + declare: false, + decls: vec![ast::VarDeclarator { + span: DUMMY_SP, + name: ast::Pat::Ident(ast::BindingIdent::from(temp_id.clone())), + init: Some(Box::new(ast::Expr::Object(ast::ObjectLit { + span: DUMMY_SP, + props: vec![], + }))), + definite: false, + }], + ctxt: var_decl.ctxt, + })))); + emitted_shared_ref_decl = true; + } + + // _ref.sig = ... + result.push(ast::Stmt::Expr(ast::ExprStmt { + span: DUMMY_SP, + expr: Box::new(ast::Expr::Assign(ast::AssignExpr { + span: DUMMY_SP, + op: ast::AssignOp::Assign, + left: ast::AssignTarget::Simple(ast::SimpleAssignTarget::Member( + ast::MemberExpr { + span: DUMMY_SP, + obj: Box::new(ast::Expr::Ident(temp_id.clone())), + prop: ast::MemberProp::Ident(ast::IdentName::new( + var_name.clone(), + DUMMY_SP, + )), + }, + )), + right: Box::new(replace_self_refs_with_member_access( + *init.clone(), + var_name, + &temp_id, + )), + })), + })); + + // const {sig} = _ref + result.push(ast::Stmt::Decl(ast::Decl::Var(Box::new(ast::VarDecl { + span: var_decl.span, + kind: var_decl.kind, + declare: false, + decls: vec![ast::VarDeclarator { + span: DUMMY_SP, + name: ast::Pat::Object(ast::ObjectPat { + span: DUMMY_SP, + props: vec![ast::ObjectPatProp::Assign(ast::AssignPatProp { + span: DUMMY_SP, + key: ident.id.clone().into(), + value: None, + })], + optional: false, + type_ann: None, + }), + init: Some(Box::new(ast::Expr::Ident(temp_id.clone()))), + definite: false, + }], + ctxt: var_decl.ctxt, + })))); + + continue; + } + } + } + + result.push(stmt); + } + + result +} + +fn pick_shared_self_ref_ident(stmts: &[ast::Stmt]) -> ast::Ident { + let mut declared_names: HashSet = HashSet::new(); + + for stmt in stmts { + if let ast::Stmt::Decl(decl) = stmt { + let mut declared = HashSet::new(); + collect_declared_idents_from_decl(decl, &mut declared); + for id in declared { + declared_names.insert(id.0); + } + } + } + + let mut index = 0; + loop { + let candidate = if index == 0 { + "_ref".to_string() + } else { + format!("_ref{}", index) + }; + let candidate_atom: Atom = candidate.clone().into(); + if !declared_names.contains(&candidate_atom) { + return ast::Ident::new(candidate_atom, DUMMY_SP, Default::default()); + } + index += 1; + } +} + +// Replace references to var_name with _ref.var_name +fn replace_self_refs_with_member_access( + expr: ast::Expr, + var_name: &Atom, + temp_id: &ast::Ident, +) -> ast::Expr { + match expr { + ast::Expr::Ident(ref ident) if &ident.sym == var_name => { + ast::Expr::Member(ast::MemberExpr { + span: DUMMY_SP, + obj: Box::new(ast::Expr::Ident(temp_id.clone())), + prop: ast::MemberProp::Ident(ast::IdentName::new(var_name.clone(), DUMMY_SP)), + }) + } + ast::Expr::Call(mut call) => { + call.args = call + .args + .into_iter() + .map(|arg| ast::ExprOrSpread { + spread: arg.spread, + expr: Box::new(replace_self_refs_with_member_access( + *arg.expr, var_name, temp_id, + )), + }) + .collect(); + ast::Expr::Call(call) + } + ast::Expr::Array(mut arr) => { + arr.elems = arr + .elems + .into_iter() + .map(|elem| { + elem.map(|e| ast::ExprOrSpread { + spread: e.spread, + expr: Box::new(replace_self_refs_with_member_access( + *e.expr, var_name, temp_id, + )), + }) + }) + .collect(); + ast::Expr::Array(arr) + } + // Add more expression types as needed + other => other, + } +} + +fn collect_declared_idents_from_decl(decl: &ast::Decl, out: &mut HashSet) { + match decl { + ast::Decl::Var(var) => { + for decl in &var.decls { + let mut identifiers: Vec<(Id, swc_common::Span)> = Vec::new(); + collect_from_pat(&decl.name, &mut identifiers); + out.extend(identifiers.into_iter().map(|(id, _)| id)); + } + } + ast::Decl::Fn(func) => { + out.insert(id!(func.ident)); + } + ast::Decl::Class(class) => { + out.insert(id!(class.ident)); + } + _ => {} + } +} + +#[derive(Debug)] +enum ExprOrSkip { + Expr, + Skip, +} + +#[derive(Debug)] +struct AnyIdentCollector { + local_idents: HashSet, + expr_ctxt: Vec, +} + +impl AnyIdentCollector { + fn new() -> Self { + Self { + local_idents: HashSet::new(), + expr_ctxt: Vec::with_capacity(32), + } + } +} + +impl Visit for AnyIdentCollector { + noop_visit_type!(); + + fn visit_expr(&mut self, node: &ast::Expr) { + self.expr_ctxt.push(ExprOrSkip::Expr); + node.visit_children_with(self); + self.expr_ctxt.pop(); + } + + fn visit_stmt(&mut self, node: &ast::Stmt) { + self.expr_ctxt.push(ExprOrSkip::Skip); + node.visit_children_with(self); + self.expr_ctxt.pop(); + } + + fn visit_jsx_element_name(&mut self, node: &ast::JSXElementName) { + if let ast::JSXElementName::Ident(ref ident) = node { + let ident_name = ident.sym.as_ref().chars().next(); + if let Some('A'..='Z') = ident_name { + } else { + return; + } + } + + node.visit_children_with(self); + } + + fn visit_jsx_attr(&mut self, node: &ast::JSXAttr) { + self.expr_ctxt.push(ExprOrSkip::Skip); + node.visit_children_with(self); + self.expr_ctxt.pop(); + } + + fn visit_ident(&mut self, node: &ast::Ident) { + if matches!(self.expr_ctxt.last(), Some(ExprOrSkip::Expr)) + && (node.sym != *"undefined" + && node.sym != *"NaN" + && node.sym != *"Infinity" + && node.sym != *"null") + { + self.local_idents.insert(id!(node)); + } + } + + fn visit_key_value_prop(&mut self, node: &ast::KeyValueProp) { + self.expr_ctxt.push(ExprOrSkip::Skip); + node.visit_children_with(self); + self.expr_ctxt.pop(); + } + + fn visit_member_expr(&mut self, member: &ast::MemberExpr) { + self.expr_ctxt.push(ExprOrSkip::Skip); + member.visit_children_with(self); + self.expr_ctxt.pop(); + } +} + fn create_named_export(expr: Box, name: &str) -> ast::ModuleItem { ast::ModuleItem::ModuleDecl(ast::ModuleDecl::ExportDecl(ast::ExportDecl { span: DUMMY_SP, @@ -286,3 +1220,302 @@ fn read_captures(_captures: &Id, scoped_idents: &[Id]) -> ast::Stmt { .collect(), }))) } + +// Function to hoist qrl() calls from an expression to the module level +fn hoist_qrls_from_expr(expr: ast::Expr) -> (ast::Expr, BTreeMap) { + let mut hoisted = BTreeMap::new(); + let mut visitor = QrlHoistingVisitor { + hoisted: &mut hoisted, + }; + let expr = expr.fold_with(&mut visitor); + (expr, hoisted) +} + +// Visitor to collect and hoist qrl() and inlinedQrl() calls +struct QrlHoistingVisitor<'a> { + hoisted: &'a mut BTreeMap, +} + +impl Fold for QrlHoistingVisitor<'_> { + fn fold_expr(&mut self, expr: ast::Expr) -> ast::Expr { + // First, recursively fold children + let expr = expr.fold_children_with(self); + + // Check if this is a qrl() or inlinedQrl() call + if let ast::Expr::Call(mut call_expr) = expr { + if let ast::Callee::Expr(box ast::Expr::Ident(callee_ident)) = &call_expr.callee { + let is_inlined_qrl = callee_ident.sym == *_INLINED_QRL + || callee_ident.sym == *_INLINED_QRL_DEV + || callee_ident.sym == *"inlinedQrlDev"; + if callee_ident.sym == *_QRL || is_inlined_qrl { + // Extract the symbol name from the second argument + if let Some(ast::ExprOrSpread { + expr: second_arg, .. + }) = call_expr.args.get(1) + { + if let ast::Expr::Lit(ast::Lit::Str(s)) = &**second_arg { + let symbol_name = s.value.clone(); + + if is_inlined_qrl { + if let Some(first_arg) = call_expr.args.get_mut(0) { + let first_arg_is_ident_or_null = matches!( + &*first_arg.expr, + ast::Expr::Ident(_) | ast::Expr::Lit(ast::Lit::Null(_)) + ); + + if !first_arg_is_ident_or_null { + let lifted_ident_id: Id = ( + Atom::from(format!("_inlined_{}", symbol_name)), + swc_common::SyntaxContext::empty(), + ); + + if !self.hoisted.contains_key(&lifted_ident_id) { + let lifted_declarator = ast::VarDeclarator { + span: DUMMY_SP, + name: ast::Pat::Ident(ast::BindingIdent::from( + new_ident_from_id(&lifted_ident_id), + )), + init: Some(first_arg.expr.clone()), + definite: false, + }; + + self.hoisted.insert( + lifted_ident_id.clone(), + ast::ModuleItem::Stmt(ast::Stmt::Decl( + ast::Decl::Var(Box::new(ast::VarDecl { + span: DUMMY_SP, + kind: ast::VarDeclKind::Const, + declare: false, + ctxt: swc_common::SyntaxContext::empty(), + decls: vec![lifted_declarator], + })), + )), + ); + } + + first_arg.expr = Box::new(ast::Expr::Ident( + new_ident_from_id(&lifted_ident_id), + )); + } + } + } + + if is_inlined_qrl { + if let Some(first_arg) = call_expr.args.first() { + if matches!(&*first_arg.expr, ast::Expr::Ident(_)) { + return ast::Expr::Call(call_expr); + } + } + } + + // Check if there are captures (third argument) + // Don't hoist QRLs with captures since they depend on local variables + if let Some(ast::ExprOrSpread { + expr: third_arg, .. + }) = call_expr.args.get(2) + { + // If third arg is an array expression with elements, it has captures + if let ast::Expr::Array(arr) = &**third_arg { + if !arr.elems.is_empty() { + // Skip hoisting this QRL - it has captures + return ast::Expr::Call(call_expr); + } + } + } + + let ident_name = Atom::from(format!("_qrl_{}", symbol_name)); + let id: Id = (ident_name, swc_common::SyntaxContext::empty()); + + // Only hoist if we haven't already + if !self.hoisted.contains_key(&id) { + let declarator = ast::VarDeclarator { + span: DUMMY_SP, + name: ast::Pat::Ident(ast::BindingIdent::from( + new_ident_from_id(&id), + )), + init: Some(Box::new(ast::Expr::Call(call_expr))), + definite: false, + }; + self.hoisted.insert( + id.clone(), + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var( + Box::new(ast::VarDecl { + span: DUMMY_SP, + kind: ast::VarDeclKind::Const, + declare: false, + ctxt: swc_common::SyntaxContext::empty(), + decls: vec![declarator], + }), + ))), + ); + } + + // Return just the identifier + return ast::Expr::Ident(new_ident_from_id(&id)); + } + } + } + } + // Not a qrl() call, return the call expr as-is + return ast::Expr::Call(call_expr); + } + + expr + } +} + +#[cfg(test)] +mod import_dedup_tests { + use super::*; + use swc_atoms::atom; + use swc_common::Globals; + use swc_common::Mark; + use swc_common::SyntaxContext; + use swc_common::GLOBALS; + + #[test] + fn test_build_import_decl_named_same_name() { + // Import named specifier where imported name == local name + let import = Import { + source: atom!("@qwik.dev/core"), + specifier: atom!("signal"), + kind: ImportKind::Named, + synthetic: false, + asserts: None, + }; + let id = (atom!("signal"), Default::default()); + + let result = build_import_decl(&import, &id); + + // Verify it's a module item with import + match result { + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::Import(import_decl)) => { + assert_eq!(import_decl.src.value, atom!("@qwik.dev/core")); + assert_eq!(import_decl.specifiers.len(), 1); + } + _ => panic!("Expected import declaration"), + } + } + + #[test] + fn test_build_import_decl_named_renamed() { + // Import named specifier where imported name != local name (aliased) + let import = Import { + source: atom!("@qwik.dev/core"), + specifier: atom!("signal"), + kind: ImportKind::Named, + synthetic: false, + asserts: None, + }; + let id = (atom!("sig"), Default::default()); + + let result = build_import_decl(&import, &id); + + // Verify it's a module item with renamed import + match result { + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::Import(import_decl)) => { + assert_eq!(import_decl.src.value, atom!("@qwik.dev/core")); + assert_eq!(import_decl.specifiers.len(), 1); + + // Check specifier has the correct import name and local name + if let ast::ImportSpecifier::Named(named) = &import_decl.specifiers[0] { + // Should have imported name "signal" and local name "sig" + assert!(named.imported.is_some()); + assert_eq!(named.local.sym, atom!("sig")); + } else { + panic!("Expected named specifier"); + } + } + _ => panic!("Expected import declaration"), + } + } + + #[test] + fn test_build_import_decl_default() { + // Default import + let import = Import { + source: atom!("./module"), + specifier: atom!("default"), + kind: ImportKind::Default, + synthetic: false, + asserts: None, + }; + let id = (atom!("Module"), Default::default()); + + let result = build_import_decl(&import, &id); + + // Verify it's a module item with default import + match result { + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::Import(import_decl)) => { + assert_eq!(import_decl.src.value, atom!("./module")); + assert_eq!(import_decl.specifiers.len(), 1); + + if let ast::ImportSpecifier::Default(_) = &import_decl.specifiers[0] { + // Correct + } else { + panic!("Expected default specifier"); + } + } + _ => panic!("Expected import declaration"), + } + } + + #[test] + fn test_collision_renaming_strategy() { + // Test the collision renaming logic: first import keeps name, subsequent get indexed suffixes + let base_name = atom!("foo"); + let renamed_first = base_name.clone(); + let renamed_second = Atom::from(format!("{}_{}", base_name, 1)); + let renamed_third = Atom::from(format!("{}_{}", base_name, 2)); + + assert_eq!(renamed_first, atom!("foo")); + assert_eq!(renamed_second, atom!("foo_1")); + assert_eq!(renamed_third, atom!("foo_2")); + } + + #[test] + fn test_collect_needed_extra_top_items_with_context_mismatch() { + GLOBALS.set(&Globals::new(), || { + let defined_ctxt = SyntaxContext::empty(); + let used_ctxt = SyntaxContext::empty().apply_mark(Mark::new()); + + let defined_id = (atom!("RouteStateContext"), defined_ctxt); + let used_id = (atom!("RouteStateContext"), used_ctxt); + + let context_decl = + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(Box::new(ast::VarDecl { + span: DUMMY_SP, + ctxt: Default::default(), + kind: ast::VarDeclKind::Const, + declare: false, + decls: vec![ast::VarDeclarator { + span: DUMMY_SP, + name: ast::Pat::Ident(ast::BindingIdent { + id: ast::Ident::new(defined_id.0.clone(), DUMMY_SP, defined_ctxt), + type_ann: None, + }), + init: Some(Box::new(ast::Expr::Lit(ast::Lit::Str(ast::Str { + span: DUMMY_SP, + value: atom!("qc-s"), + raw: None, + })))), + definite: false, + }], + })))); + + let mut extra_top_items = BTreeMap::new(); + extra_top_items.insert(defined_id, context_decl); + + let result = collect_needed_extra_top_items( + &extra_top_items, + &[used_id], + &[], + &[], + &ast::Expr::Lit(ast::Lit::Null(ast::Null { span: DUMMY_SP })), + &[], + ); + + assert_eq!(result.len(), 1); + }); + } +} diff --git a/packages/qwik/src/optimizer/core/src/collector.rs b/packages/qwik/src/optimizer/core/src/collector.rs index b0458133346..a29fb8fe407 100644 --- a/packages/qwik/src/optimizer/core/src/collector.rs +++ b/packages/qwik/src/optimizer/core/src/collector.rs @@ -1,5 +1,7 @@ use std::collections::{HashMap, HashSet}; +use indexmap::IndexMap; + use swc_atoms::{atom, Atom}; use swc_common::{Span, SyntaxContext, DUMMY_SP}; use swc_ecmascript::ast; @@ -34,24 +36,32 @@ pub struct Import { pub asserts: Option>, } +#[derive(Clone)] +pub struct ExportInfo { + pub local_id: Id, + pub exported_names: Vec>, +} + pub struct GlobalCollect { pub synthetic: Vec<(Id, Import)>, - pub imports: HashMap, - pub exports: HashMap>, - pub root: HashMap, + pub imports: IndexMap, + pub exports: IndexMap, + pub root: IndexMap, rev_imports: HashMap<(Atom, Atom), Id>, + canonical_ids: HashMap, in_export_decl: bool, } pub fn global_collect(program: &ast::Program) -> GlobalCollect { let mut collect = GlobalCollect { synthetic: vec![], - imports: HashMap::with_capacity(16), - exports: HashMap::with_capacity(16), + imports: IndexMap::with_capacity(16), + exports: IndexMap::with_capacity(16), - root: HashMap::with_capacity(16), + root: IndexMap::with_capacity(16), rev_imports: HashMap::with_capacity(16), + canonical_ids: HashMap::with_capacity(16), in_export_decl: false, }; @@ -60,6 +70,71 @@ pub fn global_collect(program: &ast::Program) -> GlobalCollect { } impl GlobalCollect { + fn register_canonical_id(&mut self, id: &Id) { + self.canonical_ids + .entry(id.0.clone()) + .or_insert_with(|| id.clone()); + } + + pub fn add_root(&mut self, id: Id, span: Span) { + self.register_canonical_id(&id); + self.root.insert(id, span); + } + + pub fn canonical_id_for(&self, id: &Id) -> Id { + self.canonical_ids + .get(&id.0) + .cloned() + .unwrap_or_else(|| id.clone()) + } + + pub fn root_id_for_symbol(&self, symbol: &Atom) -> Option { + self.root + .keys() + .find(|candidate| &candidate.0 == symbol) + .cloned() + } + + pub fn has_export_symbol(&self, symbol: &Atom) -> bool { + self.exports.contains_key(symbol) + } + + pub fn has_export_id(&self, id: &Id) -> bool { + self.has_export_symbol(&id.0) + } + + pub fn resolve_export_name_for_id(&self, id: &Id) -> Option> { + let export = self.exports.get(&id.0)?; + let auto_name: Atom = format!("_auto_{}", id.0).into(); + if export + .exported_names + .iter() + .any(|name| name.as_ref() == Some(&auto_name)) + { + return Some(Some(auto_name)); + } + + export.exported_names.first().cloned() + } + + pub fn export_local_ids(&self) -> Vec { + self.exports + .values() + .map(|info| info.local_id.clone()) + .collect() + } + + pub fn remove_root_and_exports_for_id(&mut self, id: &Id) { + self.root.shift_remove(id); + if self + .exports + .get(&id.0) + .is_some_and(|info| info.local_id == *id) + { + self.exports.shift_remove(&id.0); + } + } + pub fn get_imported_local(&self, specifier: &Atom, source: &Atom) -> Option { self.imports .iter() @@ -71,7 +146,7 @@ impl GlobalCollect { if self.imports.contains_key(local) { return true; } - if self.exports.contains_key(local) { + if self.has_export_id(local) { return true; } if self.root.contains_key(local) { @@ -104,6 +179,7 @@ impl GlobalCollect { } pub fn add_import(&mut self, local: Id, import: Import) { + self.register_canonical_id(&local); if import.synthetic { self.synthetic.push((local.clone(), import.clone())); } @@ -115,12 +191,26 @@ impl GlobalCollect { } pub fn add_export(&mut self, local: Id, exported: Option) -> bool { - if let std::collections::hash_map::Entry::Vacant(e) = self.exports.entry(local) { - e.insert(exported); - true - } else { - false + self.register_canonical_id(&local); + let canonical_local = self.canonical_id_for(&local); + if let indexmap::map::Entry::Vacant(e) = self.exports.entry(local.0.clone()) { + e.insert(ExportInfo { + local_id: canonical_local, + exported_names: vec![exported], + }); + return true; } + + let export_info = self.exports.get_mut(&local.0).expect("entry exists"); + if export_info.local_id != canonical_local { + export_info.local_id = canonical_local; + } + + if export_info.exported_names.contains(&exported) { + return false; + } + export_info.exported_names.push(exported); + true } } @@ -131,20 +221,22 @@ impl Visit for GlobalCollect { if let ast::ModuleItem::Stmt(ast::Stmt::Decl(decl)) = node { match decl { ast::Decl::Fn(function) => { - self.root.insert(id!(function.ident), function.ident.span); + self.add_root(id!(function.ident), function.ident.span); } ast::Decl::Class(class) => { - self.root.insert(id!(class.ident), class.ident.span); + self.add_root(id!(class.ident), class.ident.span); } ast::Decl::Var(var) => { for decl in &var.decls { let mut identifiers: Vec<(Id, Span)> = vec![]; collect_from_pat(&decl.name, &mut identifiers); - self.root.extend(identifiers.into_iter()); + for (id, span) in identifiers { + self.add_root(id, span); + } } } ast::Decl::TsEnum(enu) => { - self.root.insert(id!(enu.id), enu.id.span); + self.add_root(id!(enu.id), enu.id.span); } _ => {} } @@ -221,15 +313,11 @@ impl Visit for GlobalCollect { } } ast::ExportSpecifier::Default(default) => { - self.exports - .entry(id!(default.exported)) - .or_insert(Some(atom!("default"))); + self.add_export(id!(default.exported), Some(atom!("default"))); } ast::ExportSpecifier::Namespace(namespace) => { if let ast::ModuleExportName::Ident(ident) = &namespace.name { - self.exports - .entry(id!(ident)) - .or_insert_with(|| Some("*".into())); + self.add_export(id!(ident), Some("*".into())); } } } diff --git a/packages/qwik/src/optimizer/core/src/dependency_analysis.rs b/packages/qwik/src/optimizer/core/src/dependency_analysis.rs index e1fa8be437f..58f4f1e7f2d 100644 --- a/packages/qwik/src/optimizer/core/src/dependency_analysis.rs +++ b/packages/qwik/src/optimizer/core/src/dependency_analysis.rs @@ -64,15 +64,21 @@ pub fn analyze_root_dependencies( for spec in &named.specifiers { if let ast::ExportSpecifier::Named(named_spec) = spec { if let ast::ModuleExportName::Ident(ident) = &named_spec.orig { - // Check if the exported name is _auto_ (auto-export for segments) if let Some(ast::ModuleExportName::Ident(exported_id)) = &named_spec.exported { + // Skip auto-exports used for segment internals. let is_auto_export = exported_id.sym.starts_with("_auto_"); if !is_auto_export { let id = (ident.sym.clone(), ident.ctxt); user_exported.insert(id.clone()); } + } else { + // Plain `export { foo }` should be treated as user-exported. + if !ident.sym.starts_with("_auto_") { + let id = (ident.sym.clone(), ident.ctxt); + user_exported.insert(id); + } } } } @@ -307,8 +313,8 @@ fn collect_decl_idents(pat: &ast::Pat, idents: &mut Vec) { pub fn build_root_var_usage_map( segments: &[crate::transform::Segment], root_dependencies: &HashMap, -) -> HashMap> { - let mut usage_map: HashMap> = HashMap::new(); +) -> indexmap::IndexMap> { + let mut usage_map: indexmap::IndexMap> = indexmap::IndexMap::new(); for (seg_idx, segment) in segments.iter().enumerate() { // Check both local_idents and scoped_idents for variables used by this segment @@ -334,9 +340,10 @@ pub fn build_root_var_usage_map( pub fn find_migratable_vars( segments: &[crate::transform::Segment], root_dependencies: &HashMap, - root_var_usage: &HashMap>, -) -> HashMap> { - let mut migratable: HashMap> = HashMap::new(); + root_var_usage: &indexmap::IndexMap>, +) -> std::collections::BTreeMap> { + let mut migratable: std::collections::BTreeMap> = + std::collections::BTreeMap::new(); for (root_var_id, segments_using) in root_var_usage.iter() { // Only migrate if: @@ -361,6 +368,52 @@ pub fn find_migratable_vars( } } + // Safety filter: do not migrate a root var if it is still referenced by + // another root declaration that is not migrated to the same segment. + // This prevents removing module-scope declarations that are still required + // by the root module (e.g. routeLoaderQrl using RouteStateContext). + let mut changed = true; + while changed { + changed = false; + + let assignment: std::collections::BTreeMap = migratable + .iter() + .flat_map(|(seg_idx, vars)| vars.iter().map(move |var_id| (var_id.clone(), *seg_idx))) + .collect(); + + for (seg_idx, vars) in migratable.iter_mut() { + let before_len = vars.len(); + vars.retain(|candidate_id| { + let candidate_target = assignment.get(candidate_id).copied().unwrap_or(*seg_idx); + + let used_by_incompatible_root = + root_dependencies.iter().any(|(root_id, dep_info)| { + // Ignore self-dependency and non-root/import nodes + if root_id == candidate_id || dep_info.is_imported { + return false; + } + + // Only relevant if this root declaration references the candidate + if !dep_info.depends_on.iter().any(|dep| dep == candidate_id) { + return false; + } + + // Safe only when the referencing root declaration is migrated + // to the same segment as the candidate. + assignment.get(root_id).copied() != Some(candidate_target) + }); + + !used_by_incompatible_root + }); + + if vars.len() != before_len { + changed = true; + } + } + + migratable.retain(|_, vars| !vars.is_empty()); + } + migratable } @@ -401,64 +454,3 @@ fn collect_transitive_dependencies( result } - -/// Topologically sorts variables by their dependencies. -/// Returns variables in declaration order (dependencies first). -pub fn topological_sort_variables( - var_ids: &[Id], - root_dependencies: &HashMap, -) -> Vec { - let mut in_degree: HashMap = HashMap::new(); - let mut adj_list: HashMap> = HashMap::new(); - - // Initialize - for var_id in var_ids { - if !in_degree.contains_key(var_id) { - in_degree.insert(var_id.clone(), 0); - } - if !adj_list.contains_key(var_id) { - adj_list.insert(var_id.clone(), Vec::new()); - } - } - - // Build graph: for each variable, add edges from its dependencies - for var_id in var_ids { - if let Some(dep_info) = root_dependencies.get(var_id) { - for dep in &dep_info.depends_on { - // Only consider dependencies within our set - if var_ids.iter().any(|v| v == dep) { - // dep -> var_id (var_id depends on dep) - adj_list - .entry(dep.clone()) - .or_default() - .push(var_id.clone()); - *in_degree.entry(var_id.clone()).or_insert(0) += 1; - } - } - } - } - - // Kahn's algorithm - let mut queue: VecDeque = in_degree - .iter() - .filter(|(_, °ree)| degree == 0) - .map(|(id, _)| id.clone()) - .collect(); - - let mut result = Vec::new(); - while let Some(current) = queue.pop_front() { - result.push(current.clone()); - - if let Some(neighbors) = adj_list.get(¤t) { - for neighbor in neighbors { - let new_degree = in_degree[neighbor] - 1; - in_degree.insert(neighbor.clone(), new_degree); - if new_degree == 0 { - queue.push_back(neighbor.clone()); - } - } - } - } - - result -} diff --git a/packages/qwik/src/optimizer/core/src/fixtures/index.qwik.mjs b/packages/qwik/src/optimizer/core/src/fixtures/index.qwik.mjs index 70f66f48220..8a3d2107246 100644 --- a/packages/qwik/src/optimizer/core/src/fixtures/index.qwik.mjs +++ b/packages/qwik/src/optimizer/core/src/fixtures/index.qwik.mjs @@ -1,38 +1,89 @@ -import * as qwikRouterConfig from '@qwik-router-config'; -import swRegister from '@qwik-router-sw-register'; +import { jsx, Fragment, jsxs } from '@qwik.dev/core/jsx-runtime'; import { - _deserializeData, - _fnSignal, - _getContextElement, - _jsxBranch, - _jsxSplit, - _restProps, - _serializeData, - _weakSerialize, - _wrapSignal, - componentQrl, + component$, + useErrorBoundary, + useOnWindow, + $, + Slot, createContextId, - eventQrl, - getLocale, + useContext, implicit$FirstArg, - inlinedQrl, noSerialize, - SkipRender, - Slot, - untrack, - useContext, - useContextProvider, - useLexicalScope, - useOnDocument, + useVisibleTask$, useServerData, useSignal, - useStore, - useStylesQrl, - useTaskQrl, + untrack, + sync$, + isDev, withLocale, + event$, + isServer, + useStyles$, + useStore, + isBrowser, + useContextProvider, + useTask$, + getLocale, + jsx as jsx$1, + SkipRender, + createElement, } from '@qwik.dev/core'; -import { isBrowser, isDev, isServer } from '@qwik.dev/core/build'; -import { z, z as z2 } from 'zod'; +import { + g as getClientNavPath, + s as shouldPreload, + p as preloadRouteBundles, + l as loadClientData, + i as isPromise, + a as isSamePath, + c as createLoaderSignal, + t as toUrl, + b as isSameOrigin, + d as loadRoute, + D as DEFAULT_LOADERS_SERIALIZATION_STRATEGY, + C as CLIENT_DATA_CACHE, + Q as Q_ROUTE, + e as clientNavigate, + f as QFN_KEY, + h as QACTION_KEY, + j as QDATA_KEY, +} from './chunks/routing.qwik.mjs'; +import * as qwikRouterConfig from '@qwik-router-config'; +import { + _getContextContainer, + SerializerSymbol, + _UNINITIALIZED, + _hasStoreEffects, + forceStoreEffects, + _waitUntilRendered, + _getContextHostElement, + _getContextEvent, + _serialize, + _deserialize, + _resolveContextWithoutSequentialScope, +} from '@qwik.dev/core/internal'; +import { _asyncRequestStore } from '@qwik.dev/router/middleware/request-handler'; +import * as v from 'valibot'; +import * as z from 'zod'; +export { z } from 'zod'; +import swRegister from '@qwik-router-sw-register'; +import { renderToStream } from '@qwik.dev/core/server'; +import '@qwik.dev/core/preloader'; +import './chunks/types.qwik.mjs'; + +const ErrorBoundary = component$((props) => { + const store = useErrorBoundary(); + useOnWindow( + 'qerror', + $((e) => { + store.error = e.detail.error; + }) + ); + if (store.error && props.fallback$) { + return /* @__PURE__ */ jsx(Fragment, { children: props.fallback$(store.error) }); + } + return /* @__PURE__ */ jsx(Slot, {}); +}); + const RouteStateContext = /* @__PURE__ */ createContextId('qc-s'); const ContentContext = /* @__PURE__ */ createContextId('qc-c'); const ContentInternalContext = /* @__PURE__ */ createContextId('qc-ic'); @@ -40,176 +91,173 @@ const DocumentHeadContext = /* @__PURE__ */ createContextId('qc-h'); const RouteLocationContext = /* @__PURE__ */ createContextId('qc-l'); const RouteNavigateContext = /* @__PURE__ */ createContextId('qc-n'); const RouteActionContext = /* @__PURE__ */ createContextId('qc-a'); -const RouterOutlet = /* @__PURE__ */ componentQrl( - /* @__PURE__ */ inlinedQrl(() => { - _jsxBranch(); - useOnDocument( - 'qinit', - eventQrl( - /* @__PURE__ */ inlinedQrl(() => { - const POPSTATE_FALLBACK_INITIALIZED = '_qRouterPopstateFallback'; - const CLIENT_HISTORY_INITIALIZED = '_qRouterHistory'; - if (!window[POPSTATE_FALLBACK_INITIALIZED]) { - window[POPSTATE_FALLBACK_INITIALIZED] = () => { - if (!window[CLIENT_HISTORY_INITIALIZED]) location.reload(); - }; - setTimeout(() => { - addEventListener('popstate', window[POPSTATE_FALLBACK_INITIALIZED]); - }, 0); - } - }, 'RouterOutlet_component_useOnDocument_event_KnNE9eL0qfc') - ) +const RoutePreventNavigateContext = /* @__PURE__ */ createContextId('qc-p'); + +const useContent = () => useContext(ContentContext); +const useDocumentHead = () => useContext(DocumentHeadContext); +const useLocation = () => useContext(RouteLocationContext); +const useNavigate = () => useContext(RouteNavigateContext); +const usePreventNavigateQrl = (fn) => { + if (!__EXPERIMENTAL__.preventNavigate) { + throw new Error( + 'usePreventNavigate$ is experimental and must be enabled with `experimental: ["preventNavigate"]` in the `qwikVite` plugin.' ); - const context = useContext(ContentInternalContext); - if (context.value && context.value.length > 0) { - const contentsLen = context.value.length; - let cmp = null; - for (let i = contentsLen - 1; i >= 0; i--) - cmp = _jsxSplit( - context.value[i].default, - { - children: cmp, - }, - 1, - 'k8_0' - ); - return cmp; - } - return SkipRender; - }, 'RouterOutlet_component_AKetNByE5TM') -); -const MODULE_CACHE = /* @__PURE__ */ new WeakMap(); -const CLIENT_DATA_CACHE = /* @__PURE__ */ new Map(); -const QACTION_KEY = 'qaction'; -const toPath = (url) => url.pathname + url.search + url.hash; -const toUrl = (url, baseUrl) => new URL(url, baseUrl.href); -const isSameOrigin = (a, b) => a.origin === b.origin; -const isSamePath = (a, b) => a.pathname + a.search === b.pathname + b.search; -const isSamePathname = (a, b) => a.pathname === b.pathname; -const isSameOriginDifferentPathname = (a, b) => isSameOrigin(a, b) && !isSamePath(a, b); -const getClientDataPath = (pathname, pageSearch, action) => { - let search = pageSearch ?? ''; - if (action) search += (search ? '&' : '?') + QACTION_KEY + '=' + encodeURIComponent(action.id); - return pathname + (pathname.endsWith('/') ? '' : '/') + 'q-data.json' + search; -}; -const getClientNavPath = (props, baseUrl) => { - const href = props.href; - if (typeof href === 'string' && href.trim() !== '' && typeof props.target !== 'string') - try { - const linkUrl = toUrl(href, baseUrl.url); - const currentUrl = toUrl('', baseUrl.url); - if (isSameOrigin(linkUrl, currentUrl)) return toPath(linkUrl); - } catch (e) { - console.error(e); - } - else if (props.reload) return toPath(toUrl('', baseUrl.url)); - return null; -}; -const getPrefetchDataset = (props, clientNavPath, currentLoc) => { - if (props.prefetch === true && clientNavPath) { - const prefetchUrl = toUrl(clientNavPath, currentLoc.url); - if (!isSamePathname(prefetchUrl, toUrl('', currentLoc.url))) return ''; } - return null; + const registerPreventNav = useContext(RoutePreventNavigateContext); + useVisibleTask$(() => registerPreventNav(fn)); }; -const clientNavigate = (win, newUrl, routeNavigate) => { - const currentUrl = win.location; - if (isSameOriginDifferentPathname(currentUrl, newUrl)) { - handleScroll(win, currentUrl, newUrl); - win.history.pushState('', '', toPath(newUrl)); - } - if (!win._qRouterHistory) { - win._qRouterHistory = 1; - win.addEventListener('popstate', () => { - const currentUrl2 = win.location; - const previousUrl = toUrl(routeNavigate.value, currentUrl2); - if (isSameOriginDifferentPathname(currentUrl2, previousUrl)) { - handleScroll(win, previousUrl, currentUrl2); - routeNavigate.value = toPath(new URL(currentUrl2.href)); +const usePreventNavigate$ = implicit$FirstArg(usePreventNavigateQrl); +const useAction = () => useContext(RouteActionContext); +const useQwikRouterEnv = () => noSerialize(useServerData('qwikrouter')); + +const Link = component$((props) => { + const nav = useNavigate(); + const loc = useLocation(); + const originalHref = props.href; + const anchorRef = useSignal(); + const { + onClick$, + prefetch: prefetchProp, + reload, + replaceState, + scroll, + ...linkProps + } = /* @__PURE__ */ (() => props)(); + const clientNavPath = untrack(getClientNavPath, { ...linkProps, reload }, loc); + linkProps.href = clientNavPath || originalHref; + const prefetchData = + (!!clientNavPath && prefetchProp !== false && prefetchProp !== 'js') || void 0; + const prefetch = + prefetchData || + (!!clientNavPath && prefetchProp !== false && untrack(shouldPreload, clientNavPath, loc)); + const handlePrefetch = prefetch + ? $((_, elm) => { + if (navigator.connection?.saveData) { + return; + } + if (elm && elm.href) { + const url = new URL(elm.href); + preloadRouteBundles(url.pathname); + if (elm.hasAttribute('data-prefetch')) { + loadClientData(url, { + preloadRouteBundles: false, + isPrefetch: true, + }); + } + } + }) + : void 0; + const preventDefault = clientNavPath + ? sync$((event) => { + if (!(event.metaKey || event.ctrlKey || event.shiftKey || event.altKey)) { + event.preventDefault(); + } + }) + : void 0; + const handleClientSideNavigation = clientNavPath + ? $((event, elm) => { + if (event.defaultPrevented) { + if (elm.href) { + elm.setAttribute('aria-pressed', 'true'); + nav(elm.href, { forceReload: reload, replaceState, scroll }).then(() => { + elm.removeAttribute('aria-pressed'); + }); + } + } + }) + : void 0; + const handlePreload = $((_, elm) => { + const url = new URL(elm.href); + preloadRouteBundles(url.pathname, 1); + }); + useVisibleTask$(({ track }) => { + track(() => loc.url.pathname); + const handler = linkProps.onQVisible$; + if (handler) { + const event = new CustomEvent('qvisible'); + if (Array.isArray(handler)) { + handler.flat(10).forEach((handler2) => handler2?.(event, anchorRef.value)); + } else { + handler?.(event, anchorRef.value); } - }); - win.removeEventListener('popstate', win._qRouterPopstateFallback); - } -}; -const handleScroll = async (win, previousUrl, newUrl) => { - const doc = win.document; - const newHash = newUrl.hash; - if (isSamePath(previousUrl, newUrl)) { - if (previousUrl.hash !== newHash) { - await domWait(); - if (newHash) scrollToHashId(doc, newHash); - else win.scrollTo(0, 0); } - } else { - if (newHash) - for (let i = 0; i < 24; i++) { - await domWait(); - if (scrollToHashId(doc, newHash)) break; - } - else { - await domWait(); - win.scrollTo(0, 0); + if (!isDev && anchorRef.value) { + handlePrefetch?.(void 0, anchorRef.value); } - } -}; -const domWait = () => new Promise((resolve) => setTimeout(resolve, 12)); -const scrollToHashId = (doc, hash) => { - const elmId = hash.slice(1); - const elm = doc.getElementById(elmId); - if (elm) elm.scrollIntoView(); - return elm; -}; -const dispatchPrefetchEvent = (prefetchData) => { - if (typeof document !== 'undefined') - document.dispatchEvent( - new CustomEvent('qprefetch', { - detail: prefetchData, - }) - ); -}; -const resolveHead = (endpoint, routeLocation, contentModules, locale) => { - const head = createDocumentHead(); - const getData = (loaderOrAction) => { - const id = loaderOrAction.__id; - if (loaderOrAction.__brand === 'server_loader') { - if (!(id in endpoint.loaders)) - throw new Error( - 'You can not get the returned data of a loader that has not been executed for this request.' - ); + }); + return /* @__PURE__ */ jsx('a', { + ref: anchorRef, + ...{ 'q:link': !!clientNavPath }, + ...linkProps, + onClick$: [ + preventDefault, + handlePreload, + // needs to be in between preventDefault and onClick$ to ensure it starts asap. + onClick$, + handleClientSideNavigation, + ], + 'data-prefetch': prefetchData, + onMouseOver$: [linkProps.onMouseOver$, handlePrefetch], + onFocus$: [linkProps.onFocus$, handlePrefetch], + onQVisible$: [], + children: /* @__PURE__ */ jsx(Slot, {}), + }); +}); + +const resolveHead = (endpoint, routeLocation, contentModules, locale, defaults) => + withLocale(locale, () => { + const head = createDocumentHead(defaults); + const getData = (loaderOrAction) => { + const id = loaderOrAction.__id; + if (loaderOrAction.__brand === 'server_loader') { + if (!(id in endpoint.loaders)) { + throw new Error( + 'You can not get the returned data of a loader that has not been executed for this request.' + ); + } + } + const data = endpoint.loaders[id]; + if (isPromise(data)) { + throw new Error('Loaders returning a promise can not be resolved for the head function.'); + } + return data; + }; + const fns = []; + for (const contentModule of contentModules) { + const contentModuleHead = contentModule?.head; + if (contentModuleHead) { + if (typeof contentModuleHead === 'function') { + fns.unshift(contentModuleHead); + } else if (typeof contentModuleHead === 'object') { + resolveDocumentHead(head, contentModuleHead); + } + } } - const data = endpoint.loaders[id]; - if (data instanceof Promise) - throw new Error('Loaders returning a function can not be referred to in the head function.'); - return data; - }; - const headProps = { - head, - withLocale: (fn) => withLocale(locale, fn), - resolveValue: getData, - ...routeLocation, - }; - for (let i = contentModules.length - 1; i >= 0; i--) { - const contentModuleHead = contentModules[i] && contentModules[i].head; - if (contentModuleHead) { - if (typeof contentModuleHead === 'function') - resolveDocumentHead( - head, - withLocale(locale, () => contentModuleHead(headProps)) - ); - else if (typeof contentModuleHead === 'object') resolveDocumentHead(head, contentModuleHead); + if (fns.length) { + const headProps = { + head, + withLocale: (fn) => fn(), + resolveValue: getData, + ...routeLocation, + }; + for (const fn of fns) { + resolveDocumentHead(head, fn(headProps)); + } } - } - return headProps.head; -}; + return head; + }); const resolveDocumentHead = (resolvedHead, updatedHead) => { - if (typeof updatedHead.title === 'string') resolvedHead.title = updatedHead.title; + if (typeof updatedHead.title === 'string') { + resolvedHead.title = updatedHead.title; + } mergeArray(resolvedHead.meta, updatedHead.meta); mergeArray(resolvedHead.links, updatedHead.links); mergeArray(resolvedHead.styles, updatedHead.styles); + mergeArray(resolvedHead.scripts, updatedHead.scripts); Object.assign(resolvedHead.frontmatter, updatedHead.frontmatter); }; const mergeArray = (existingArr, newArr) => { - if (Array.isArray(newArr)) + if (Array.isArray(newArr)) { for (const newItem of newArr) { if (typeof newItem.key === 'string') { const existingIndex = existingArr.findIndex((i) => i.key === newItem.key); @@ -220,462 +268,871 @@ const mergeArray = (existingArr, newArr) => { } existingArr.push(newItem); } + } }; -const createDocumentHead = () => ({ - title: '', - meta: [], - links: [], - styles: [], - frontmatter: {}, +const createDocumentHead = (defaults) => ({ + title: defaults?.title || '', + meta: [...(defaults?.meta || [])], + links: [...(defaults?.links || [])], + styles: [...(defaults?.styles || [])], + scripts: [...(defaults?.scripts || [])], + frontmatter: { ...defaults?.frontmatter }, }); -const loadRoute = async (routes, menus, cacheModules, pathname) => { - if (Array.isArray(routes)) - for (const route of routes) { - const match = route[0].exec(pathname); - if (match) { - const loaders = route[1]; - const params = getPathParams(route[2], match); - const routeBundleNames = route[4]; - const mods = new Array(loaders.length); - const pendingLoads = []; - const menuLoader = getMenuLoader(menus, pathname); - let menu = void 0; - loaders.forEach((moduleLoader, i) => { - loadModule( - moduleLoader, - pendingLoads, - (routeModule) => (mods[i] = routeModule), - cacheModules - ); - }); - loadModule( - menuLoader, - pendingLoads, - (menuModule) => (menu = menuModule?.default), - cacheModules - ); - if (pendingLoads.length > 0) await Promise.all(pendingLoads); - return [params, mods, menu, routeBundleNames]; - } - } - return null; -}; -const loadModule = (moduleLoader, pendingLoads, moduleSetter, cacheModules) => { - if (typeof moduleLoader === 'function') { - const loadedModule = MODULE_CACHE.get(moduleLoader); - if (loadedModule) moduleSetter(loadedModule); - else { - const l = moduleLoader(); - if (typeof l.then === 'function') - pendingLoads.push( - l.then((loadedModule2) => { - if (cacheModules !== false) MODULE_CACHE.set(moduleLoader, loadedModule2); - moduleSetter(loadedModule2); - }) - ); - else if (l) moduleSetter(l); + +const transitionCss = + '@layer qwik{@supports selector(html:active-view-transition-type(type)){html:active-view-transition-type(qwik-navigation){:root{view-transition-name:none}}}@supports not selector(html:active-view-transition-type(type)){:root{view-transition-name:none}}}'; + +function callRestoreScrollOnDocument() { + if (document.__q_scroll_restore__) { + document.__q_scroll_restore__(); + document.__q_scroll_restore__ = void 0; + } +} +const restoreScroll = (type, toUrl, fromUrl, scroller, scrollState) => { + if (type === 'popstate' && scrollState) { + scroller.scrollTo(scrollState.x, scrollState.y); + } else if (type === 'link' || type === 'form') { + if (!hashScroll(toUrl, fromUrl)) { + scroller.scrollTo(0, 0); } } }; -const getMenuLoader = (menus, pathname) => { - if (menus) { - pathname = pathname.endsWith('/') ? pathname : pathname + '/'; - const menu = menus.find( - (m) => m[0] === pathname || pathname.startsWith(m[0] + (pathname.endsWith('/') ? '' : '/')) - ); - if (menu) return menu[1]; +const hashScroll = (toUrl, fromUrl) => { + const elmId = toUrl.hash.slice(1); + const elm = elmId && document.getElementById(elmId); + if (elm) { + elm.scrollIntoView(); + return true; + } else if (!elm && toUrl.hash && isSamePath(toUrl, fromUrl)) { + return true; } + return false; }; -const getPathParams = (paramNames, match) => { - const params = {}; - if (paramNames) - for (let i = 0; i < paramNames.length; i++) { - const param = match?.[i + 1] ?? ''; - const v = param.endsWith('/') ? param.slice(0, -1) : param; - params[paramNames[i]] = decodeURIComponent(v); - } - return params; +const currentScrollState = (elm) => { + return { + x: elm.scrollLeft, + y: elm.scrollTop, + w: Math.max(elm.scrollWidth, elm.clientWidth), + h: Math.max(elm.scrollHeight, elm.clientHeight), + }; }; -const loadClientData = async (url, element, clearCache, action) => { - const pagePathname = url.pathname; - const pageSearch = url.search; - const clientDataPath = getClientDataPath(pagePathname, pageSearch, action); - let qData = void 0; - if (!action) qData = CLIENT_DATA_CACHE.get(clientDataPath); - dispatchPrefetchEvent({ - links: [pagePathname], - }); - if (!qData) { - const options = getFetchOptions(action); - if (action) action.data = void 0; - qData = fetch(clientDataPath, options).then((rsp) => { - const redirectedURL = new URL(rsp.url); - if (redirectedURL.origin !== location.origin || !isQDataJson(redirectedURL.pathname)) { - location.href = redirectedURL.href; +const getScrollHistory = () => { + const state = history.state; + return state?._qRouterScroll; +}; +const saveScrollHistory = (scrollState) => { + const state = history.state || {}; + state._qRouterScroll = scrollState; + history.replaceState(state, ''); +}; + +const spaInit = event$((_, el) => { + if (!window._qRouterSPA && !window._qRouterInitPopstate) { + const currentPath = location.pathname + location.search; + const checkAndScroll = (scrollState) => { + if (scrollState) { + window.scrollTo(scrollState.x, scrollState.y); + } + }; + const currentScrollState = () => { + const elm = document.documentElement; + return { + x: elm.scrollLeft, + y: elm.scrollTop, + w: Math.max(elm.scrollWidth, elm.clientWidth), + h: Math.max(elm.scrollHeight, elm.clientHeight), + }; + }; + const saveScrollState = (scrollState) => { + const state = history.state || {}; + state._qRouterScroll = scrollState || currentScrollState(); + history.replaceState(state, ''); + }; + saveScrollState(); + window._qRouterInitPopstate = () => { + if (window._qRouterSPA) { return; } - if ((rsp.headers.get('content-type') || '').includes('json')) - return rsp.text().then((text) => { - const clientData = _deserializeData(text, element); - if (!clientData) { - location.href = url.href; - return; + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + if (currentPath !== location.pathname + location.search) { + const getContainer = (el2) => + el2.closest('[q\\:container]:not([q\\:container=html]):not([q\\:container=text])'); + const container = getContainer(el); + const domContainer = container.qContainer; + const hostElement = domContainer.vNodeLocate(el); + const nav = domContainer?.resolveContext(hostElement, { + id: 'qc--n', + }); + if (nav) { + nav(location.href, { type: 'popstate' }); + } else { + location.reload(); + } + } else { + if (history.scrollRestoration === 'manual') { + const scrollState = history.state?._qRouterScroll; + checkAndScroll(scrollState); + window._qRouterScrollEnabled = true; + } + } + }; + if (!window._qRouterHistoryPatch) { + window._qRouterHistoryPatch = true; + const pushState = history.pushState; + const replaceState = history.replaceState; + const prepareState = (state) => { + if (state === null || typeof state === 'undefined') { + state = {}; + } else if (state?.constructor !== Object) { + state = { _data: state }; + if (isDev) { + console.warn( + 'In a Qwik SPA context, `history.state` is used to store scroll state. Direct calls to `pushState()` and `replaceState()` must supply an actual Object type. We need to be able to automatically attach the scroll state to your state object. A new state object has been created, your data has been moved to: `history.state._data`' + ); } - if (clearCache) CLIENT_DATA_CACHE.delete(clientDataPath); - if (clientData.redirect) location.href = clientData.redirect; - else if (action) { - const actionData = clientData.loaders[action.id]; - action.resolve({ - status: rsp.status, - result: actionData, - }); + } + state._qRouterScroll = state._qRouterScroll || currentScrollState(); + return state; + }; + history.pushState = (state, title, url) => { + state = prepareState(state); + return pushState.call(history, state, title, url); + }; + history.replaceState = (state, title, url) => { + state = prepareState(state); + return replaceState.call(history, state, title, url); + }; + } + window._qRouterInitAnchors = (event) => { + if (window._qRouterSPA || event.defaultPrevented) { + return; + } + const target = event.target.closest('a[href]'); + if (target && !target.hasAttribute('preventdefault:click')) { + const href = target.getAttribute('href'); + const prev = new URL(location.href); + const dest = new URL(href, prev); + const sameOrigin = dest.origin === prev.origin; + const samePath = dest.pathname + dest.search === prev.pathname + prev.search; + if (sameOrigin && samePath) { + event.preventDefault(); + if (dest.href !== prev.href) { + history.pushState(null, '', dest); } - return clientData; - }); - else { - location.href = url.href; - return void 0; + if (!dest.hash) { + if (dest.href.endsWith('#')) { + window.scrollTo(0, 0); + } else { + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + saveScrollState({ ...currentScrollState(), x: 0, y: 0 }); + location.reload(); + } + } else { + const elmId = dest.hash.slice(1); + const elm = document.getElementById(elmId); + if (elm) { + elm.scrollIntoView(); + } + } + } } - }); - if (!action) CLIENT_DATA_CACHE.set(clientDataPath, qData); - } - return qData.then((v) => { - if (!v) CLIENT_DATA_CACHE.delete(clientDataPath); - return v; - }); -}; -const getFetchOptions = (action) => { - const actionData = action?.data; - if (!actionData) return void 0; - if (actionData instanceof FormData) - return { - method: 'POST', - body: actionData, }; - else - return { - method: 'POST', - body: JSON.stringify(actionData), - headers: { - 'Content-Type': 'application/json, charset=UTF-8', - }, + window._qRouterInitVisibility = () => { + if ( + !window._qRouterSPA && + window._qRouterScrollEnabled && + document.visibilityState === 'hidden' + ) { + saveScrollState(); + } }; + window._qRouterInitScroll = () => { + if (window._qRouterSPA || !window._qRouterScrollEnabled) { + return; + } + clearTimeout(window._qRouterScrollDebounce); + window._qRouterScrollDebounce = setTimeout(() => { + saveScrollState(); + window._qRouterScrollDebounce = void 0; + }, 200); + }; + window._qRouterScrollEnabled = true; + setTimeout(() => { + window.addEventListener('popstate', window._qRouterInitPopstate); + window.addEventListener('scroll', window._qRouterInitScroll, { passive: true }); + document.addEventListener('click', window._qRouterInitAnchors); + if (!window.navigation) { + document.addEventListener('visibilitychange', window._qRouterInitVisibility, { + passive: true, + }); + } + }, 0); + } +}); + +const startViewTransition = (params) => { + if (!params.update) { + return; + } + if ('startViewTransition' in document) { + let transition; + try { + transition = document.startViewTransition(params); + } catch { + transition = document.startViewTransition(params.update); + } + const event = new CustomEvent('qviewtransition', { detail: transition }); + document.dispatchEvent(event); + return transition; + } else { + params.update?.(); + } }; -const isQDataJson = (pathname) => { - return pathname.endsWith(QDATA_JSON); -}; -const QDATA_JSON = '/q-data.json'; -const useContent = () => useContext(ContentContext); -const useDocumentHead = () => useContext(DocumentHeadContext); -const useLocation = () => useContext(RouteLocationContext); -const useNavigate = () => useContext(RouteNavigateContext); -const useAction = () => useContext(RouteActionContext); -const useQwikRouterEnv = () => noSerialize(useServerData('qwikrouter')); -const QwikRouterProvider = /* @__PURE__ */ componentQrl( - /* @__PURE__ */ inlinedQrl((props) => { - useStylesQrl( - /* @__PURE__ */ inlinedQrl( - `:root{view-transition-name: none}`, - 'QwikRouterProvider_component_useStyles_RPDJAz33WLA' - ) + +const QWIK_CITY_SCROLLER = '_qCityScroller'; +const QWIK_ROUTER_SCROLLER = '_qRouterScroller'; +const preventNav = {}; +const internalState = { navCount: 0 }; +const useQwikRouter = (props) => { + if (!isServer) { + throw new Error( + 'useQwikRouter can only run during SSR on the server. If you are seeing this, it means you are re-rendering the root of your application. Fix that or use the component around the root of your application.' ); - const env = useQwikRouterEnv(); - if (!env?.params) throw new Error(`Missing Qwik Router Env Data`); - const urlEnv = useServerData('url'); - if (!urlEnv) throw new Error(`Missing Qwik URL Env Data`); - const url = new URL(urlEnv); - const routeLocation = useStore( - { - url, - params: env.params, - isNavigating: false, - }, - { - deep: false, - } + } + useStyles$(transitionCss); + const env = useQwikRouterEnv(); + if (!env?.params) { + throw new Error( + `Missing Qwik Router Env Data for help visit https://github.com/QwikDev/qwik/issues/6237` ); - const loaderState = _weakSerialize( - useStore(env.response.loaders, { - deep: false, - }) + } + const urlEnv = useServerData('url'); + if (!urlEnv) { + throw new Error(`Missing Qwik URL Env Data`); + } + const serverHead = useServerData('documentHead'); + if ( + env.ev.originalUrl.pathname !== env.ev.url.pathname && + !__EXPERIMENTAL__.enableRequestRewrite + ) { + throw new Error( + `enableRequestRewrite is an experimental feature and is not enabled. Please enable the feature flag by adding \`experimental: ["enableRequestRewrite"]\` to your qwikVite plugin options.` ); - const navPath = useSignal(toPath(url)); - const documentHead = useStore(createDocumentHead); - const content = useStore({ - headings: void 0, - menu: void 0, - }); - const contentInternal = useSignal(); - const currentActionId = env.response.action; - const currentAction = currentActionId ? env.response.loaders[currentActionId] : void 0; - const actionState = useSignal( - currentAction - ? { - id: currentActionId, - data: env.response.formData, - output: { - result: currentAction, - status: env.response.status, - }, - } - : void 0 + } + const url = new URL(urlEnv); + const routeLocationTarget = { + url, + params: env.params, + isNavigating: false, + prevUrl: void 0, + }; + const routeLocation = useStore(routeLocationTarget, { deep: false }); + const navResolver = {}; + const container = _getContextContainer(); + const getSerializationStrategy = (loaderId) => { + return ( + env.response.loadersSerializationStrategy.get(loaderId) || + DEFAULT_LOADERS_SERIALIZATION_STRATEGY + ); + }; + const loadersObject = {}; + const loaderState = {}; + for (const [key, value] of Object.entries(env.response.loaders)) { + loadersObject[key] = value; + loaderState[key] = createLoaderSignal( + loadersObject, + key, + url, + getSerializationStrategy(key), + container ); - const goto = eventQrl( - /* @__PURE__ */ inlinedQrl( - async (path, forceReload) => { - const [actionState2, navPath2, routeLocation2] = useLexicalScope(); - if (path === void 0) { - path = navPath2.value; - navPath2.value = ''; - } else if (forceReload) navPath2.value = ''; - const resolvedURL = new URL(path, routeLocation2.url); - path = toPath(resolvedURL); - if (!forceReload && navPath2.value === path) return; - navPath2.value = path; - if (isBrowser) { - loadClientData(resolvedURL, _getContextElement()); - loadRoute( - qwikRouterConfig.routes, - qwikRouterConfig.menus, - qwikRouterConfig.cacheModules, - resolvedURL.pathname + } + loadersObject[SerializerSymbol] = (obj) => { + const loadersSerializationObject = {}; + for (const [k, v] of Object.entries(obj)) { + loadersSerializationObject[k] = getSerializationStrategy(k) === 'always' ? v : _UNINITIALIZED; + } + return loadersSerializationObject; + }; + const routeInternal = useSignal({ + type: 'initial', + dest: url, + scroll: true, + }); + const documentHead = useStore(() => createDocumentHead(serverHead)); + const content = useStore({ + headings: void 0, + menu: void 0, + }); + const contentInternal = useSignal(); + const currentActionId = env.response.action; + const currentAction = currentActionId ? env.response.loaders[currentActionId] : void 0; + const actionState = useSignal( + currentAction + ? { + id: currentActionId, + data: env.response.formData, + output: { + result: currentAction, + status: env.response.status, + }, + } + : void 0 + ); + const registerPreventNav = $((fn$) => { + if (!isBrowser) { + return; + } + preventNav.$handler$ ||= (event) => { + internalState.navCount++; + if (!preventNav.$cbs$) { + return; + } + const prevents = [...preventNav.$cbs$.values()].map((cb) => + cb.resolved ? cb.resolved() : cb() + ); + if (prevents.some(Boolean)) { + event.preventDefault(); + event.returnValue = true; + } + }; + (preventNav.$cbs$ ||= /* @__PURE__ */ new Set()).add(fn$); + fn$.resolve(); + window.addEventListener('beforeunload', preventNav.$handler$); + return () => { + if (preventNav.$cbs$) { + preventNav.$cbs$.delete(fn$); + if (!preventNav.$cbs$.size) { + preventNav.$cbs$ = void 0; + window.removeEventListener('beforeunload', preventNav.$handler$); + } + } + }; + }); + const goto = $(async (path, opt) => { + const { + type = 'link', + forceReload = path === void 0, + // Hack for nav() because this API is already set. + replaceState = false, + scroll = true, + } = typeof opt === 'object' ? opt : { forceReload: opt }; + internalState.navCount++; + if (isBrowser && type === 'link' && routeInternal.value.type === 'initial') { + const url2 = new URL(window.location.href); + routeInternal.value.dest = url2; + routeLocation.url = url2; + } + const lastDest = routeInternal.value.dest; + const dest = + path === void 0 ? lastDest : typeof path === 'number' ? path : toUrl(path, routeLocation.url); + if ( + preventNav.$cbs$ && + (forceReload || + typeof dest === 'number' || + !isSamePath(dest, lastDest) || + !isSameOrigin(dest, lastDest)) + ) { + const ourNavId = internalState.navCount; + const prevents = await Promise.all([...preventNav.$cbs$.values()].map((cb) => cb(dest))); + if (ourNavId !== internalState.navCount || prevents.some(Boolean)) { + if (ourNavId === internalState.navCount && type === 'popstate') { + history.pushState(null, '', lastDest); + } + return; + } + } + if (typeof dest === 'number') { + if (isBrowser) { + history.go(dest); + } + return; + } + if (!isSameOrigin(dest, lastDest)) { + if (isBrowser) { + location.href = dest.href; + } + return; + } + if (!forceReload && isSamePath(dest, lastDest)) { + if (isBrowser) { + if (type === 'link' && dest.href !== location.href) { + history.pushState(null, '', dest); + } + let scroller = document.getElementById(QWIK_ROUTER_SCROLLER); + if (!scroller) { + scroller = document.getElementById(QWIK_CITY_SCROLLER); + if (scroller && isDev) { + console.warn( + `Please update your scroller ID to "${QWIK_ROUTER_SCROLLER}" as "${QWIK_CITY_SCROLLER}" is deprecated and will be removed in V3` ); } - actionState2.value = void 0; - routeLocation2.isNavigating = true; - }, - 'QwikRouterProvider_component_goto_event_cBcjROynRVg', - [actionState, navPath, routeLocation] - ) - ); - useContextProvider(ContentContext, content); - useContextProvider(ContentInternalContext, contentInternal); - useContextProvider(DocumentHeadContext, documentHead); - useContextProvider(RouteLocationContext, routeLocation); - useContextProvider(RouteNavigateContext, goto); - useContextProvider(RouteStateContext, loaderState); - useContextProvider(RouteActionContext, actionState); - useTaskQrl( - /* @__PURE__ */ inlinedQrl( - ({ track }) => { - const [ - actionState2, - content2, - contentInternal2, - documentHead2, - env2, - loaderState2, - navPath2, - props2, - routeLocation2, - url2, - ] = useLexicalScope(); - async function run() { - const [path, action] = track(() => [navPath2.value, actionState2.value]); - const locale = getLocale(''); - let trackUrl; - let clientPageData; - let loadedRoute = null; - if (isServer) { - trackUrl = new URL(path, routeLocation2.url); - loadedRoute = env2.loadedRoute; - clientPageData = env2.response; - } else { - trackUrl = new URL(path, location); - if (trackUrl.pathname.endsWith('/')) { - if (!qwikRouterConfig.trailingSlash) - trackUrl.pathname = trackUrl.pathname.slice(0, -1); - } else if (qwikRouterConfig.trailingSlash) trackUrl.pathname += '/'; - let loadRoutePromise = loadRoute( - qwikRouterConfig.routes, - qwikRouterConfig.menus, - qwikRouterConfig.cacheModules, - trackUrl.pathname - ); - const element = _getContextElement(); - const pageData = (clientPageData = await loadClientData( - trackUrl, - element, - true, - action - )); - if (!pageData) { - navPath2.untrackedValue = toPath(trackUrl); - return; - } - const newHref = pageData.href; - const newURL = new URL(newHref, trackUrl.href); - if (newURL.pathname !== trackUrl.pathname) { - trackUrl = newURL; - loadRoutePromise = loadRoute( - qwikRouterConfig.routes, - qwikRouterConfig.menus, - qwikRouterConfig.cacheModules, - trackUrl.pathname + } + if (!scroller) { + scroller = document.documentElement; + } + restoreScroll(type, dest, new URL(location.href), scroller, getScrollHistory()); + if (type === 'popstate') { + window._qRouterScrollEnabled = true; + } + } + return; + } + routeInternal.value = { + type, + dest, + forceReload, + replaceState, + scroll, + }; + if (isBrowser) { + loadClientData(dest); + loadRoute( + qwikRouterConfig.routes, + qwikRouterConfig.menus, + qwikRouterConfig.cacheModules, + dest.pathname + ); + } + actionState.value = void 0; + routeLocation.isNavigating = true; + return new Promise((resolve) => { + navResolver.r = resolve; + }); + }); + useContextProvider(ContentContext, content); + useContextProvider(ContentInternalContext, contentInternal); + useContextProvider(DocumentHeadContext, documentHead); + useContextProvider(RouteLocationContext, routeLocation); + useContextProvider(RouteNavigateContext, goto); + useContextProvider(RouteStateContext, loaderState); + useContextProvider(RouteActionContext, actionState); + useContextProvider(RoutePreventNavigateContext, registerPreventNav); + useTask$(({ track }) => { + async function run() { + const navigation = track(routeInternal); + const action = track(actionState); + const locale = getLocale(''); + const prevUrl = routeLocation.url; + const navType = action ? 'form' : navigation.type; + const replaceState = navigation.replaceState; + let trackUrl; + let clientPageData; + let loadedRoute = null; + let container2; + if (isServer) { + trackUrl = new URL(navigation.dest, routeLocation.url); + loadedRoute = env.loadedRoute; + clientPageData = env.response; + } else { + trackUrl = new URL(navigation.dest, location); + if (trackUrl.pathname.endsWith('/')) { + if (globalThis.__NO_TRAILING_SLASH__) { + trackUrl.pathname = trackUrl.pathname.slice(0, -1); + } + } else if (!globalThis.__NO_TRAILING_SLASH__) { + trackUrl.pathname += '/'; + } + let loadRoutePromise = loadRoute( + qwikRouterConfig.routes, + qwikRouterConfig.menus, + qwikRouterConfig.cacheModules, + trackUrl.pathname + ); + container2 = _getContextContainer(); + const pageData = (clientPageData = await loadClientData(trackUrl, { + action, + clearCache: true, + })); + if (!pageData) { + routeInternal.untrackedValue = { type: navType, dest: trackUrl }; + return; + } + const newHref = pageData.href; + const newURL = new URL(newHref, trackUrl); + if (!isSamePath(newURL, trackUrl)) { + if (!pageData.isRewrite) { + trackUrl = newURL; + } + loadRoutePromise = loadRoute( + qwikRouterConfig.routes, + qwikRouterConfig.menus, + qwikRouterConfig.cacheModules, + newURL.pathname + // Load the actual required path. + ); + } + try { + loadedRoute = await loadRoutePromise; + } catch (e) { + console.error(e); + window.location.href = newHref; + return; + } + } + if (loadedRoute) { + const [routeName, params, mods, menu] = loadedRoute; + const contentModules = mods; + const pageModule = contentModules[contentModules.length - 1]; + if (navigation.dest.search && !!isSamePath(trackUrl, prevUrl)) { + trackUrl.search = navigation.dest.search; + } + let shouldForcePrevUrl = false; + let shouldForceUrl = false; + let shouldForceParams = false; + if (!isSamePath(trackUrl, prevUrl)) { + if (_hasStoreEffects(routeLocation, 'prevUrl')) { + shouldForcePrevUrl = true; + } + routeLocationTarget.prevUrl = prevUrl; + } + if (routeLocationTarget.url !== trackUrl) { + if (_hasStoreEffects(routeLocation, 'url')) { + shouldForceUrl = true; + } + routeLocationTarget.url = trackUrl; + } + if (routeLocationTarget.params !== params) { + if (_hasStoreEffects(routeLocation, 'params')) { + shouldForceParams = true; + } + routeLocationTarget.params = params; + } + routeInternal.untrackedValue = { type: navType, dest: trackUrl }; + const resolvedHead = resolveHead( + clientPageData, + routeLocation, + contentModules, + locale, + serverHead + ); + content.headings = pageModule.headings; + content.menu = menu; + contentInternal.untrackedValue = noSerialize(contentModules); + documentHead.links = resolvedHead.links; + documentHead.meta = resolvedHead.meta; + documentHead.styles = resolvedHead.styles; + documentHead.scripts = resolvedHead.scripts; + documentHead.title = resolvedHead.title; + documentHead.frontmatter = resolvedHead.frontmatter; + if (isBrowser) { + let scrollState; + if (navType === 'popstate') { + scrollState = getScrollHistory(); + } + const scroller = + document.getElementById(QWIK_ROUTER_SCROLLER) ?? document.documentElement; + if ( + (navigation.scroll && + (!navigation.forceReload || !isSamePath(trackUrl, prevUrl)) && + (navType === 'link' || navType === 'popstate')) || // Action might have responded with a redirect. + (navType === 'form' && !isSamePath(trackUrl, prevUrl)) + ) { + document.__q_scroll_restore__ = () => + restoreScroll(navType, trackUrl, prevUrl, scroller, scrollState); + } + const loaders = clientPageData?.loaders; + if (loaders) { + const container3 = _getContextContainer(); + for (const [key, value] of Object.entries(loaders)) { + const signal = loaderState[key]; + const awaitedValue = await value; + loadersObject[key] = awaitedValue; + if (!signal) { + loaderState[key] = createLoaderSignal( + loadersObject, + key, + trackUrl, + DEFAULT_LOADERS_SERIALIZATION_STRATEGY, + container3 ); + } else { + signal.invalidate(); } - loadedRoute = await loadRoutePromise; } - if (loadedRoute) { - const [params, mods, menu] = loadedRoute; - const contentModules = mods; - const pageModule = contentModules[contentModules.length - 1]; - routeLocation2.url = trackUrl; - routeLocation2.params = { - ...params, + } + CLIENT_DATA_CACHE.clear(); + if (!window._qRouterSPA) { + window._qRouterSPA = true; + history.scrollRestoration = 'manual'; + window.addEventListener('popstate', () => { + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + goto(location.href, { + type: 'popstate', + }); + }); + window.removeEventListener('popstate', window._qRouterInitPopstate); + window._qRouterInitPopstate = void 0; + if (!window._qRouterHistoryPatch) { + window._qRouterHistoryPatch = true; + const pushState = history.pushState; + const replaceState2 = history.replaceState; + const prepareState = (state) => { + if (state === null || typeof state === 'undefined') { + state = {}; + } else if (state?.constructor !== Object) { + state = { _data: state }; + if (isDev) { + console.warn( + 'In a Qwik SPA context, `history.state` is used to store scroll state. Direct calls to `pushState()` and `replaceState()` must supply an actual Object type. We need to be able to automatically attach the scroll state to your state object. A new state object has been created, your data has been moved to: `history.state._data`' + ); + } + } + state._qRouterScroll = state._qRouterScroll || currentScrollState(scroller); + return state; }; - navPath2.untrackedValue = toPath(trackUrl); - const resolvedHead = resolveHead( - clientPageData, - routeLocation2, - contentModules, - locale - ); - content2.headings = pageModule.headings; - content2.menu = menu; - contentInternal2.value = noSerialize(contentModules); - documentHead2.links = resolvedHead.links; - documentHead2.meta = resolvedHead.meta; - documentHead2.styles = resolvedHead.styles; - documentHead2.title = resolvedHead.title; - documentHead2.frontmatter = resolvedHead.frontmatter; - if (isBrowser) { - if ( - (props2.viewTransition ?? true) && - isSameOriginDifferentPathname(window.location, url2) - ) - document.__q_view_transition__ = true; - const loaders = clientPageData?.loaders; - if (loaders) Object.assign(loaderState2, loaders); - CLIENT_DATA_CACHE.clear(); - clientNavigate(window, trackUrl, navPath2); - routeLocation2.isNavigating = false; + history.pushState = (state, title, url2) => { + state = prepareState(state); + return pushState.call(history, state, title, url2); + }; + history.replaceState = (state, title, url2) => { + state = prepareState(state); + return replaceState2.call(history, state, title, url2); + }; + } + document.addEventListener('click', (event) => { + if (event.defaultPrevented) { + return; } + const target = event.target.closest('a[href]'); + if (target && !target.hasAttribute('preventdefault:click')) { + const href = target.getAttribute('href'); + const prev = new URL(location.href); + const dest = new URL(href, prev); + if (isSameOrigin(dest, prev) && isSamePath(dest, prev)) { + event.preventDefault(); + if (!dest.hash && !dest.href.endsWith('#')) { + if (dest.href !== prev.href) { + history.pushState(null, '', dest); + } + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + saveScrollHistory({ + ...currentScrollState(scroller), + x: 0, + y: 0, + }); + location.reload(); + return; + } + goto(target.getAttribute('href')); + } + } + }); + document.removeEventListener('click', window._qRouterInitAnchors); + window._qRouterInitAnchors = void 0; + if (!window.navigation) { + document.addEventListener( + 'visibilitychange', + () => { + if ( + (window._qRouterScrollEnabled || window._qCityScrollEnabled) && + document.visibilityState === 'hidden' + ) { + if (window._qCityScrollEnabled) { + console.warn( + '"_qCityScrollEnabled" is deprecated. Use "_qRouterScrollEnabled" instead.' + ); + } + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + } + }, + { passive: true } + ); + document.removeEventListener('visibilitychange', window._qRouterInitVisibility); + window._qRouterInitVisibility = void 0; } + window.addEventListener( + 'scroll', + () => { + if (!window._qRouterScrollEnabled && !window._qCityScrollEnabled) { + return; + } + clearTimeout(window._qRouterScrollDebounce); + window._qRouterScrollDebounce = setTimeout(() => { + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + window._qRouterScrollDebounce = void 0; + }, 200); + }, + { passive: true } + ); + removeEventListener('scroll', window._qRouterInitScroll); + window._qRouterInitScroll = void 0; + spaInit.resolve(); } - const promise = run(); - if (isServer) return promise; - else return; - }, - 'QwikRouterProvider_component_useTask_02wMImzEAbk', - [ - actionState, - content, - contentInternal, - documentHead, - env, - loaderState, - navPath, - props, - routeLocation, - url, - ] - ) - ); - return /* @__PURE__ */ _jsxSplit(Slot, null, 3, 'qY_0'); - }, 'QwikRouterProvider_component_TxCFOy819ag') -); -const QwikRouterMockProvider = /* @__PURE__ */ componentQrl( - /* @__PURE__ */ inlinedQrl((props) => { - const urlEnv = props.url ?? 'http://localhost/'; - const url = new URL(urlEnv); - const routeLocation = useStore( - { - url, - params: props.params ?? {}, - isNavigating: false, - }, - { - deep: false, - } - ); - const loaderState = useSignal({}); - const goto = /* @__PURE__ */ inlinedQrl(async (path) => { - throw new Error('Not implemented'); - }, 'QwikRouterMockProvider_component_goto_BUbtvTyvVRE'); - const documentHead = useStore(createDocumentHead, { - deep: false, - }); - const content = useStore( - { - headings: void 0, - menu: void 0, - }, - { - deep: false, + if (navType !== 'popstate') { + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + } + const navigate = () => { + clientNavigate(window, navType, prevUrl, trackUrl, replaceState); + contentInternal.trigger(); + return _waitUntilRendered(container2); + }; + const _waitNextPage = () => { + if (isServer || props?.viewTransition === false) { + return navigate(); + } else { + const viewTransition = startViewTransition({ + update: navigate, + types: ['qwik-navigation'], + }); + if (!viewTransition) { + return Promise.resolve(); + } + return viewTransition.ready; + } + }; + _waitNextPage() + .catch((err) => { + navigate(); + throw err; + }) + .finally(() => { + container2.element.setAttribute?.(Q_ROUTE, routeName); + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + window._qRouterScrollEnabled = true; + if (isBrowser) { + callRestoreScrollOnDocument(); + } + if (shouldForcePrevUrl) { + forceStoreEffects(routeLocation, 'prevUrl'); + } + if (shouldForceUrl) { + forceStoreEffects(routeLocation, 'url'); + } + if (shouldForceParams) { + forceStoreEffects(routeLocation, 'params'); + } + routeLocation.isNavigating = false; + navResolver.r?.(); + }); + } } - ); - const contentInternal = useSignal(); - useContextProvider(ContentContext, content); - useContextProvider(ContentInternalContext, contentInternal); - useContextProvider(DocumentHeadContext, documentHead); - useContextProvider(RouteLocationContext, routeLocation); - useContextProvider(RouteNavigateContext, goto); - useContextProvider(RouteStateContext, loaderState); - return /* @__PURE__ */ _jsxSplit(Slot, null, 3, 'qY_1'); - }, 'QwikRouterMockProvider_component_WmYC5H00wtI') -); -const Link = /* @__PURE__ */ componentQrl( - /* @__PURE__ */ inlinedQrl((props) => { - const nav = useNavigate(); - const loc = useLocation(); - const linkProps = { - ...props, - }; - const clientNavPath = untrack(() => getClientNavPath(linkProps, loc)); - const prefetchDataset = untrack(() => getPrefetchDataset(props, clientNavPath, loc)); - const reload = !!linkProps.reload; - linkProps['preventdefault:click'] = !!clientNavPath; - linkProps.href = clientNavPath || props.href; - const event = eventQrl( - /* @__PURE__ */ inlinedQrl( - (ev, elm) => prefetchLinkResources(elm, ev.type === 'qvisible'), - 'Link_component_event_event_5g4B0Gd1Wck' - ) - ); - return /* @__PURE__ */ _jsxSplit( - 'a', - { - ...linkProps, - 'data-prefetch': prefetchDataset, - children: /* @__PURE__ */ _jsxSplit(Slot, null, null, 3, 'AD_0'), - onClick$: /* @__PURE__ */ inlinedQrl( - (_, elm) => { - const [nav2, reload2] = useLexicalScope(); - if (elm.href) nav2(elm.href, reload2); - }, - 'Link_component_a_onClick_kzjavhDI3L0', - [nav, reload] - ), - onMouseOver$: event, - onFocus$: event, - onQVisible$: event, - }, - null, - 0, - 'AD_1' - ); - }, 'Link_component_8gdLBszqbaM') -); -const prefetchLinkResources = (elm, isOnVisible) => { - if (elm && elm.href && elm.hasAttribute('data-prefetch')) { - if (!windowInnerWidth) windowInnerWidth = innerWidth; - if (!isOnVisible || (isOnVisible && windowInnerWidth < 520)) - loadClientData(new URL(elm.href), elm); - } + } + if (isServer) { + return run(); + } else { + run(); + } + }); }; -let windowInnerWidth = 0; -const ServiceWorkerRegister = (props) => - _jsxSplit( - 'script', - null, +const QwikRouterProvider = component$((props) => { + useQwikRouter(props); + return /* @__PURE__ */ jsx(Slot, {}); +}); +const QwikCityProvider = QwikRouterProvider; +const useQwikMockRouter = (props) => { + const urlEnv = props.url ?? 'http://localhost/'; + const url = new URL(urlEnv); + const routeLocation = useStore( { - nonce: _wrapSignal(props, 'nonce'), - dangerouslySetInnerHTML: swRegister, + url, + params: props.params ?? {}, + isNavigating: false, + prevUrl: void 0, }, - 3, - '1Z_0' + { deep: false } ); + const loadersData = props.loaders?.reduce((acc, { loader, data }) => { + acc[loader.__id] = data; + return acc; + }, {}); + const loaderState = useStore(loadersData ?? {}, { deep: false }); + const goto = + props.goto ?? + $(async () => { + console.warn('QwikRouterMockProvider: goto not provided'); + }); + const documentHead = useStore(createDocumentHead, { deep: false }); + const content = useStore( + { + headings: void 0, + menu: void 0, + }, + { deep: false } + ); + const contentInternal = useSignal(); + const actionState = useSignal(); + useContextProvider(ContentContext, content); + useContextProvider(ContentInternalContext, contentInternal); + useContextProvider(DocumentHeadContext, documentHead); + useContextProvider(RouteLocationContext, routeLocation); + useContextProvider(RouteNavigateContext, goto); + useContextProvider(RouteStateContext, loaderState); + useContextProvider(RouteActionContext, actionState); + const actionsMocks = props.actions?.reduce((acc, { action, handler }) => { + acc[action.__id] = handler; + return acc; + }, {}); + useTask$(async ({ track }) => { + const action = track(actionState); + if (!action?.resolve) { + return; + } + const mock = actionsMocks?.[action.id]; + if (mock) { + const actionResult = await mock(action.data); + action.resolve(actionResult); + } + }); +}; +const QwikRouterMockProvider = component$((props) => { + useQwikMockRouter(props); + return /* @__PURE__ */ jsx(Slot, {}); +}); +const QwikCityMockProvider = QwikRouterMockProvider; + +const RouterOutlet = component$(() => { + const serverData = useServerData('containerAttributes'); + if (!serverData) { + throw new Error('PrefetchServiceWorker component must be rendered on the server.'); + } + const internalContext = useContext(ContentInternalContext); + const contents = internalContext.value; + if (contents && contents.length > 0) { + const contentsLen = contents.length; + let cmp = null; + for (let i = contentsLen - 1; i >= 0; i--) { + if (contents[i].default) { + cmp = jsx$1(contents[i].default, { + children: cmp, + }); + } + } + return /* @__PURE__ */ jsxs(Fragment, { + children: [ + cmp, + !__EXPERIMENTAL__.noSPA && + /* @__PURE__ */ jsx('script', { + 'document:onQCInit$': spaInit, + 'document:onQInit$': sync$(() => { + ((w, h) => { + if (!w._qcs && h.scrollRestoration === 'manual') { + w._qcs = true; + const s = h.state?._qRouterScroll; + if (s) { + w.scrollTo(s.x, s.y); + } + document.dispatchEvent(new Event('qcinit')); + } + })(window, history); + }), + }), + ], + }); + } + return SkipRender; +}); + const routeActionQrl = (actionQrl, ...rest) => { const { id, validators } = getValidators(rest, actionQrl); function action() { @@ -683,6 +1140,7 @@ const routeActionQrl = (actionQrl, ...rest) => { const currentAction = useAction(); const initialState = { actionPath: `?${QACTION_KEY}=${id}`, + submitted: false, isRunning: false, status: void 0, value: void 0, @@ -692,7 +1150,9 @@ const routeActionQrl = (actionQrl, ...rest) => { const value = currentAction.value; if (value && value?.id === id) { const data = value.data; - if (data instanceof FormData) initialState.formData = data; + if (data instanceof FormData) { + initialState.formData = data; + } if (value.output) { const { status, result } = value.output; initialState.status = status; @@ -701,62 +1161,64 @@ const routeActionQrl = (actionQrl, ...rest) => { } return initialState; }); - const submit = /* @__PURE__ */ inlinedQrl( - (input = {}) => { - const [currentAction2, id2, loc2, state2] = useLexicalScope(); - if (isServer) - throw new Error(`Actions can not be invoked within the server during SSR. + const submit = $((input = {}) => { + if (isServer) { + throw new Error(`Actions can not be invoked within the server during SSR. Action.run() can only be called on the browser, for example when a user clicks a button, or submits a form.`); - let data; - let form; - if (input instanceof SubmitEvent) { - form = input.target; - data = new FormData(form); - if ( - (input.submitter instanceof HTMLInputElement || - input.submitter instanceof HTMLButtonElement) && - input.submitter.name - ) { - if (input.submitter.name) data.append(input.submitter.name, input.submitter.value); + } + let data; + let form; + if (input instanceof SubmitEvent) { + form = input.target; + data = new FormData(form); + if ( + (input.submitter instanceof HTMLInputElement || + input.submitter instanceof HTMLButtonElement) && + input.submitter.name + ) { + if (input.submitter.name) { + data.append(input.submitter.name, input.submitter.value); } - } else data = input; - return new Promise((resolve) => { - if (data instanceof FormData) state2.formData = data; - state2.isRunning = true; - loc2.isNavigating = true; - currentAction2.value = { - data, - id: id2, - resolve: noSerialize(resolve), - }; - }).then(({ result, status }) => { - state2.isRunning = false; - state2.status = status; - state2.value = result; - if (form) { - if (form.getAttribute('data-spa-reset') === 'true') form.reset(); - const detail = { - status, - value: result, - }; - form.dispatchEvent( - new CustomEvent('submitcompleted', { - bubbles: false, - cancelable: false, - composed: false, - detail, - }) - ); + } + } else { + data = input; + } + return new Promise((resolve) => { + if (data instanceof FormData) { + state.formData = data; + } + state.submitted = true; + state.isRunning = true; + loc.isNavigating = true; + currentAction.value = { + data, + id, + resolve: noSerialize(resolve), + }; + }).then(({ result, status }) => { + state.isRunning = false; + state.status = status; + state.value = result; + if (form) { + if (form.getAttribute('data-spa-reset') === 'true') { + form.reset(); } - return { - status, - value: result, - }; - }); - }, - 'routeActionQrl_action_submit_A5bZC7WO00A', - [currentAction, id, loc, state] - ); + const detail = { status, value: result }; + form.dispatchEvent( + new CustomEvent('submitcompleted', { + bubbles: false, + cancelable: false, + composed: false, + detail, + }) + ); + } + return { + status, + value: result, + }; + }); + }); initialState.submit = submit; return state; } @@ -770,64 +1232,166 @@ Action.run() can only be called on the browser, for example when a user clicks a const globalActionQrl = (actionQrl, ...rest) => { const action = routeActionQrl(actionQrl, ...rest); if (isServer) { - if (typeof globalThis._qwikActionsMap === 'undefined') + if (typeof globalThis._qwikActionsMap === 'undefined') { globalThis._qwikActionsMap = /* @__PURE__ */ new Map(); + } globalThis._qwikActionsMap.set(action.__id, action); } return action; }; const routeAction$ = /* @__PURE__ */ implicit$FirstArg(routeActionQrl); const globalAction$ = /* @__PURE__ */ implicit$FirstArg(globalActionQrl); +const getValue = (obj) => obj.value; const routeLoaderQrl = (loaderQrl, ...rest) => { - const { id, validators } = getValidators(rest, loaderQrl); + const { id, validators, serializationStrategy } = getValidators(rest, loaderQrl); function loader() { - return useContext(RouteStateContext, (state) => { - if (!(id in state)) - throw new Error(`Loader (${id}) was used in a path where the 'loader$' was not declared. - This is likely because the used loader was not exported in a layout.tsx or index.tsx file of the existing route. - For more information check: https://qwik.dev/docs/route-loader/`); - return _wrapSignal(state, id); - }); + const state = _resolveContextWithoutSequentialScope(RouteStateContext); + if (!(id in state)) { + throw new Error(`routeLoader$ "${loaderQrl.getSymbol()}" was invoked in a route where it was not declared. + This is because the routeLoader$ was not exported in a 'layout.tsx' or 'index.tsx' file of the existing route. + For more information check: https://qwik.dev/docs/route-loader/ + + If your are managing reusable logic or a library it is essential that this function is re-exported from within 'layout.tsx' or 'index.tsx file of the existing route otherwise it will not run or throw exception. + For more information check: https://qwik.dev/docs/re-exporting-loaders/`); + } + const loaderData = state[id]; + untrack(getValue, loaderData); + return loaderData; } loader.__brand = 'server_loader'; loader.__qrl = loaderQrl; loader.__validators = validators; loader.__id = id; + loader.__serializationStrategy = serializationStrategy; + loader.__expires = -1; Object.freeze(loader); return loader; }; const routeLoader$ = /* @__PURE__ */ implicit$FirstArg(routeLoaderQrl); const validatorQrl = (validator) => { - if (isServer) + if (isServer) { return { validate: validator, }; + } return void 0; }; const validator$ = /* @__PURE__ */ implicit$FirstArg(validatorQrl); +const flattenValibotIssues = (issues) => { + return issues.reduce((acc, issue) => { + if (issue.path) { + const hasArrayType = issue.path.some((path) => path.type === 'array'); + if (hasArrayType) { + const keySuffix = issue.expected === 'Array' ? '[]' : ''; + const key = + issue.path + .map((item) => (item.type === 'array' ? '*' : item.key)) + .join('.') + .replace(/\.\*/g, '[]') + keySuffix; + acc[key] = acc[key] || []; + if (Array.isArray(acc[key])) { + acc[key].push(issue.message); + } + return acc; + } else { + acc[issue.path.map((item) => item.key).join('.')] = issue.message; + } + } + return acc; + }, {}); +}; +const valibotQrl = (qrl) => { + if (!__EXPERIMENTAL__.valibot) { + throw new Error( + 'Valibot is an experimental feature and is not enabled. Please enable the feature flag by adding `experimental: ["valibot"]` to your qwikVite plugin options.' + ); + } + if (isServer) { + return { + __brand: 'valibot', + async validate(ev, inputData) { + const schema = await qrl + .resolve() + .then((obj) => (typeof obj === 'function' ? obj(ev) : obj)); + const data = inputData ?? (await ev.parseBody()); + const result = await v.safeParseAsync(schema, data); + if (result.success) { + return { + success: true, + data: result.output, + }; + } else { + if (isDev) { + console.error('ERROR: Valibot validation failed', result.issues); + } + return { + success: false, + status: 400, + error: { + formErrors: v.flatten(result.issues).root ?? [], + fieldErrors: flattenValibotIssues(result.issues), + }, + }; + } + }, + }; + } + return void 0; +}; +const valibot$ = /* @__PURE__ */ implicit$FirstArg(valibotQrl); +const flattenZodIssues = (issues) => { + issues = Array.isArray(issues) ? issues : [issues]; + return issues.reduce((acc, issue) => { + const isExpectingArray = 'expected' in issue && issue.expected === 'array'; + const hasArrayType = issue.path.some((path) => typeof path === 'number') || isExpectingArray; + if (hasArrayType) { + const keySuffix = 'expected' in issue && issue.expected === 'array' ? '[]' : ''; + const key = + issue.path + .map((path) => (typeof path === 'number' ? '*' : path)) + .join('.') + .replace(/\.\*/g, '[]') + keySuffix; + acc[key] = acc[key] || []; + if (Array.isArray(acc[key])) { + acc[key].push(issue.message); + } + return acc; + } else { + acc[issue.path.join('.')] = issue.message; + } + return acc; + }, {}); +}; const zodQrl = (qrl) => { if (isServer) { - const schema = qrl.resolve().then((obj) => { - if (typeof obj === 'function') obj = obj(z); - if (obj instanceof z.Schema) return obj; - else return z.object(obj); - }); return { + __brand: 'zod', async validate(ev, inputData) { + const schema = await qrl.resolve().then((obj) => { + if (typeof obj === 'function') { + obj = obj(z, ev); + } + if (obj instanceof z.Schema) { + return obj; + } else { + return z.object(obj); + } + }); const data = inputData ?? (await ev.parseBody()); - const result = await (await schema).safeParseAsync(data); - if (result.success) return result; - else { - if (isDev) - console.error( - '\nVALIDATION ERROR\naction$() zod validated failed', - '\n - Issues:', - result.error.issues - ); + const result = await withLocale(ev.locale(), () => schema.safeParseAsync(data)); + if (result.success) { + return result; + } else { + if (isDev) { + console.error('ERROR: Zod validation failed', result.error.issues); + } return { success: false, status: 400, - error: result.error.flatten(), + error: { + formErrors: result.error.flatten().formErrors, + fieldErrors: flattenZodIssues(result.error.issues), + }, }; } }, @@ -836,153 +1400,224 @@ const zodQrl = (qrl) => { return void 0; }; const zod$ = /* @__PURE__ */ implicit$FirstArg(zodQrl); -const serverQrl = (qrl) => { +const serverQrl = (qrl, options) => { if (isServer) { const captured = qrl.getCaptured(); - if (captured && captured.length > 0 && !_getContextElement()) + if (captured && captured.length > 0 && !_getContextHostElement()) { throw new Error('For security reasons, we cannot serialize QRLs that capture lexical scope.'); + } } - function stuff() { - return /* @__PURE__ */ inlinedQrl( - async (...args) => { - const [qrl2] = useLexicalScope(); - if (isServer) { - const requestEvent = useQwikRouterEnv()?.ev; - return qrl2.apply(requestEvent, args); - } else { - const ctxElm = _getContextElement(); - const filtered = args.map((arg) => { - if (arg instanceof SubmitEvent && arg.target instanceof HTMLFormElement) - return new FormData(arg.target); - else if (arg instanceof Event) return null; - else if (arg instanceof Node) return null; - return arg; - }); - const hash = qrl2.getHash(); - const path = `?qfunc=${qrl2.getHash()}`; - const body = await _serializeData([qrl2, ...filtered], false); - const res = await fetch(path, { - method: 'POST', - headers: { - 'Content-Type': 'application/qwik-json', - 'X-QRL': hash, - }, - body, - }); - const contentType = res.headers.get('Content-Type'); - if (res.ok && contentType === 'text/event-stream') { - const { writable, readable } = getSSETransformer(); - res.body?.pipeTo(writable); - return streamAsyncIterator(readable, ctxElm ?? document.documentElement); - } else if (contentType === 'application/qwik-json') { - const str = await res.text(); - const obj = await _deserializeData(str, ctxElm ?? document.documentElement); - if (res.status === 500) throw obj; - return obj; + const method = options?.method?.toUpperCase?.() || 'POST'; + const headers = options?.headers || {}; + const origin = options?.origin || ''; + const fetchOptions = options?.fetchOptions || {}; + return $(async function (...args) { + const abortSignal = args.length > 0 && args[0] instanceof AbortSignal ? args.shift() : void 0; + if (isServer) { + let requestEvent = _asyncRequestStore?.getStore(); + if (!requestEvent) { + const contexts = [useQwikRouterEnv()?.ev, this, _getContextEvent()]; + requestEvent = contexts.find( + (v2) => + v2 && + Object.prototype.hasOwnProperty.call(v2, 'sharedMap') && + Object.prototype.hasOwnProperty.call(v2, 'cookie') + ); + } + return qrl.apply(requestEvent, args); + } else { + let filteredArgs = args.map((arg) => { + if (arg instanceof SubmitEvent && arg.target instanceof HTMLFormElement) { + return new FormData(arg.target); + } else if (arg instanceof Event) { + return null; + } else if (arg instanceof Node) { + return null; + } + return arg; + }); + if (!filteredArgs.length) { + filteredArgs = void 0; + } + const qrlHash = qrl.getHash(); + let query = ''; + const config = { + ...fetchOptions, + method, + headers: { + ...headers, + 'Content-Type': 'application/qwik-json', + Accept: 'application/json, application/qwik-json, text/qwik-json-stream, text/plain', + // Required so we don't call accidentally + 'X-QRL': qrlHash, + }, + signal: abortSignal, + }; + const captured = qrl.getCaptured(); + let toSend = [filteredArgs]; + if (captured?.length) { + toSend = [filteredArgs, ...captured]; + } else { + toSend = filteredArgs ? [filteredArgs] : []; + } + const body = await _serialize(toSend); + if (method === 'GET') { + query += `&${QDATA_KEY}=${encodeURIComponent(body)}`; + } else { + config.body = body; + } + const res = await fetch(`${origin}?${QFN_KEY}=${qrlHash}${query}`, config); + const contentType = res.headers.get('Content-Type'); + if (res.ok && contentType === 'text/qwik-json-stream' && res.body) { + return (async function* () { + try { + for await (const result of deserializeStream(res.body, abortSignal)) { + yield result; + } + } finally { + if (!abortSignal?.aborted) { + await res.body.cancel(); + } } + })(); + } else if (contentType === 'application/qwik-json') { + const str = await res.text(); + const obj = _deserialize(str); + if (res.status >= 400) { + throw obj; } - }, - 'serverQrl_stuff_wOIPfiQ04l4', - [qrl] - ); - } - return stuff(); + return obj; + } else if (contentType === 'application/json') { + const obj = await res.json(); + if (res.status >= 400) { + throw obj; + } + return obj; + } else if (contentType === 'text/plain' || contentType === 'text/html') { + const str = await res.text(); + if (res.status >= 400) { + throw str; + } + return str; + } + } + }); }; const server$ = /* @__PURE__ */ implicit$FirstArg(serverQrl); const getValidators = (rest, qrl) => { let id; + let serializationStrategy = DEFAULT_LOADERS_SERIALIZATION_STRATEGY; const validators = []; if (rest.length === 1) { const options = rest[0]; if (options && typeof options === 'object') { - if ('validate' in options) validators.push(options); - else { + if ('validate' in options) { + validators.push(options); + } else { id = options.id; - if (options.validation) validators.push(...options.validation); + if (options.serializationStrategy) { + serializationStrategy = options.serializationStrategy; + } + if (options.validation) { + validators.push(...options.validation); + } } } - } else if (rest.length > 1) validators.push(...rest.filter((v) => !!v)); + } else if (rest.length > 1) { + validators.push(...rest.filter((v2) => !!v2)); + } if (typeof id === 'string') { if (isDev) { - if (!/^[\w/.-]+$/.test(id)) + if (!/^[\w/.-]+$/.test(id)) { throw new Error(`Invalid id: ${id}, id can only contain [a-zA-Z0-9_.-]`); + } } id = `id_${id}`; - } else id = qrl.getHash(); + } else { + id = qrl.getHash(); + } return { validators: validators.reverse(), id, + serializationStrategy, }; }; -const getSSETransformer = () => { - let currentLine = ''; - const encoder = new TextDecoder(); - const transformer = new TransformStream({ - transform(chunk, controller) { - const lines = encoder.decode(chunk).split('\n\n'); - for (let i = 0; i < lines.length - 1; i++) { - const line = currentLine + lines[i]; - if (line.length === 0) { - controller.terminate(); - break; - } else { - controller.enqueue(parseEvent(line)); - currentLine = ''; - } - } - currentLine += lines[lines.length - 1]; - }, - }); - return transformer; -}; -const parseEvent = (message) => { - const lines = message.split('\n'); - const event = { - data: '', - }; - let data = ''; - for (const line of lines) - if (line.startsWith('data: ')) data += line.slice(6) + '\n'; - else { - const [key, value] = line.split(':'); - if (typeof key === 'string' && typeof value === 'string') event[key] = value.trim(); - } - event.data = data; - return event; -}; -async function* streamAsyncIterator(stream, ctxElm) { +const deserializeStream = async function* (stream, abortSignal) { const reader = stream.getReader(); try { - while (true) { - const { done, value } = await reader.read(); - if (done) return; - const obj = await _deserializeData(value.data, ctxElm); - yield obj; + let buffer = ''; + const decoder = new TextDecoder(); + while (!abortSignal?.aborted) { + const result = await reader.read(); + if (result.done) { + break; + } + buffer += decoder.decode(result.value, { stream: true }); + const lines = buffer.split(/\n/); + buffer = lines.pop(); + for (const line of lines) { + const deserializedData = _deserialize(line); + yield deserializedData; + } } } finally { reader.releaseLock(); } -} +}; + +const ServiceWorkerRegister = (props) => + /* @__PURE__ */ jsx('script', { + type: 'module', + dangerouslySetInnerHTML: swRegister, + nonce: props.nonce, + }); + const Form = ({ action, spaReset, reloadDocument, onSubmit$, ...rest }, key) => { - _jsxBranch(); - if (action) - return _jsxSplit( + if (action) { + const isArrayApi = Array.isArray(onSubmit$); + if (isArrayApi) { + return jsx$1( + 'form', + { + ...rest, + action: action.actionPath, + 'preventdefault:submit': !reloadDocument, + onSubmit$: [ + ...onSubmit$, + // action.submit "submitcompleted" event for onSubmitCompleted$ events + !reloadDocument + ? $((evt) => { + if (!action.submitted) { + return action.submit(evt); + } + }) + : void 0, + ], + method: 'post', + ['data-spa-reset']: spaReset ? 'true' : void 0, + }, + key + ); + } + return jsx$1( 'form', { ...rest, - action: _wrapSignal(action, 'actionPath'), + action: action.actionPath, 'preventdefault:submit': !reloadDocument, - ['data-spa-reset']: spaReset ? 'true' : void 0, - onSubmit$: [!reloadDocument ? action.submit : void 0, onSubmit$], - }, - { + onSubmit$: [ + // Since v2, this fires before the action is executed so it can be prevented + onSubmit$, + // action.submit "submitcompleted" event for onSubmitCompleted$ events + !reloadDocument ? action.submit : void 0, + ], method: 'post', + ['data-spa-reset']: spaReset ? 'true' : void 0, }, - 0, key ); - else - return /* @__PURE__ */ _jsxSplit( + } else { + return /* @__PURE__ */ jsx( GetForm, { spaReset, @@ -990,85 +1625,159 @@ const Form = ({ action, spaReset, reloadDocument, onSubmit$, ...rest }, key) => onSubmit$, ...rest, }, - 0, key ); + } }; -const GetForm = /* @__PURE__ */ componentQrl( - /* @__PURE__ */ inlinedQrl((props) => { - const rest = _restProps(props, ['action', 'spaReset', 'reloadDocument', 'onSubmit$']); - const nav = useNavigate(); - return /* @__PURE__ */ _jsxSplit( - 'form', - { - ...rest, - children: /* @__PURE__ */ _jsxSplit(Slot, null, 3, 'BC_0'), - onSubmit$: /* @__PURE__ */ inlinedQrl( - async (_, form) => { - const [nav2] = useLexicalScope(); - const formData = new FormData(form); - const params = new URLSearchParams(); - formData.forEach((value, key) => { - if (typeof value === 'string') params.append(key, value); - }); - nav2('?' + params.toString(), true).then(() => { - if (form.getAttribute('data-spa-reset') === 'true') form.reset(); - form.dispatchEvent( - new CustomEvent('submitcompleted', { - bubbles: false, - cancelable: false, - composed: false, - detail: { - status: 200, - }, - }) - ); - }); - }, - 'GetForm_component_form_onSubmit_p9MSze0ojs4', - [nav] - ), - }, - { - action: 'get', - 'preventdefault:submit': _fnSignal( - (p0) => !p0.reloadDocument, - [props], - '!p0.reloadDocument' - ), - 'data-spa-reset': _fnSignal( - (p0) => (p0.spaReset ? 'true' : void 0), - [props], - 'p0.spaReset?"true":undefined' - ), - }, - 0, - 'BC_1' - ); - }, 'GetForm_component_Nk9PlpjQm9Y') -); +const GetForm = component$(({ action: _0, spaReset, reloadDocument, onSubmit$, ...rest }) => { + const nav = useNavigate(); + return /* @__PURE__ */ jsx('form', { + action: 'get', + 'preventdefault:submit': !reloadDocument, + 'data-spa-reset': spaReset ? 'true' : void 0, + ...rest, + onSubmit$: [ + ...(Array.isArray(onSubmit$) ? onSubmit$ : [onSubmit$]), + $(async (_evt, form) => { + const formData = new FormData(form); + const params = new URLSearchParams(); + formData.forEach((value, key) => { + if (typeof value === 'string') { + params.append(key, value); + } + }); + await nav('?' + params.toString(), { type: 'form', forceReload: true }); + }), + $((_evt, form) => { + if (form.getAttribute('data-spa-reset') === 'true') { + form.reset(); + } + form.dispatchEvent( + new CustomEvent('submitcompleted', { + bubbles: false, + cancelable: false, + composed: false, + detail: { + status: 200, + }, + }) + ); + }), + // end of array + ], + children: /* @__PURE__ */ jsx(Slot, {}), + }); +}); + +const untypedAppUrl = function appUrl(route, params, paramsPrefix = '') { + const path = route.split('/'); + for (let i = 0; i < path.length; i++) { + const segment = path[i]; + if (segment.startsWith('[') && segment.endsWith(']')) { + const isSpread = segment.startsWith('[...'); + const key = segment.substring(segment.startsWith('[...') ? 4 : 1, segment.length - 1); + const value = params ? params[paramsPrefix + key] || params[key] : ''; + path[i] = isSpread ? value : encodeURIComponent(value); + } + if (segment.startsWith('(') && segment.endsWith(')')) { + path.splice(i, 1); + } + } + let url = path.join('/'); + let baseURL = '/'; + if (baseURL) { + if (!baseURL.endsWith('/')) { + baseURL += '/'; + } + while (url.startsWith('/')) { + url = url.substring(1); + } + url = baseURL + url; + } + return url; +}; +function omitProps(obj, keys) { + const omittedObj = {}; + for (const key in obj) { + if (!key.startsWith('param:') && !keys.includes(key)) { + omittedObj[key] = obj[key]; + } + } + return omittedObj; +} + +const createRenderer = (getOptions) => { + return (opts) => { + const { jsx, options } = getOptions(opts); + return renderToStream(jsx, options); + }; +}; + +const DocumentHeadTags = component$((props) => { + let head = useDocumentHead(); + if (props) { + head = { ...head, ...props }; + } + return /* @__PURE__ */ jsxs(Fragment, { + children: [ + head.title && /* @__PURE__ */ jsx('title', { children: head.title }), + head.meta.map((m) => /* @__PURE__ */ jsx('meta', { ...m })), + head.links.map((l) => /* @__PURE__ */ jsx('link', { ...l })), + head.styles.map((s) => { + const props2 = s.props || s; + return /* @__PURE__ */ createElement('style', { + ...props2, + dangerouslySetInnerHTML: s.style || props2.dangerouslySetInnerHTML, + key: s.key, + }); + }), + head.scripts.map((s) => { + const props2 = s.props || s; + return /* @__PURE__ */ createElement('script', { + ...props2, + dangerouslySetInnerHTML: s.script || props2.dangerouslySetInnerHTML, + key: s.key, + }); + }), + ], + }); +}); + export { + DocumentHeadTags, + ErrorBoundary, Form, - globalAction$, - globalActionQrl, Link, + QWIK_CITY_SCROLLER, + QWIK_ROUTER_SCROLLER, + QwikCityMockProvider, + QwikCityProvider, QwikRouterMockProvider, - QwikRouterProvider as QwikRouterProvider, + QwikRouterProvider, + RouterOutlet, + ServiceWorkerRegister, + createRenderer, + globalAction$, + globalActionQrl, + omitProps, routeAction$, routeActionQrl, routeLoader$, routeLoaderQrl, - RouterOutlet, server$, serverQrl, - ServiceWorkerRegister, + untypedAppUrl, useContent, useDocumentHead, useLocation, useNavigate, + usePreventNavigate$, + usePreventNavigateQrl, + useQwikRouter, + valibot$, + valibotQrl, validator$, validatorQrl, - z2 as z, zod$, zodQrl, }; diff --git a/packages/qwik/src/optimizer/core/src/is_const.rs b/packages/qwik/src/optimizer/core/src/is_const.rs index c7a3f296dc0..f215db9305a 100644 --- a/packages/qwik/src/optimizer/core/src/is_const.rs +++ b/packages/qwik/src/optimizer/core/src/is_const.rs @@ -58,7 +58,7 @@ impl<'a> Visit for ConstCollector<'a> { if self.global.imports.contains_key(&id) { return; } - if self.global.exports.contains_key(&id) { + if self.global.has_export_id(&id) { return; } if let Some(current_stack) = self.const_idents { diff --git a/packages/qwik/src/optimizer/core/src/parse.rs b/packages/qwik/src/optimizer/core/src/parse.rs index 074f3bb83da..f337ebf7ee4 100644 --- a/packages/qwik/src/optimizer/core/src/parse.rs +++ b/packages/qwik/src/optimizer/core/src/parse.rs @@ -8,21 +8,26 @@ use std::str; use crate::add_side_effect::SideEffectVisitor; use crate::clean_side_effects::Treeshaker; use crate::code_move::{new_module, NewModuleCtx}; -use crate::collector::{collect_from_pat, global_collect, Id}; +use crate::collector::{collect_from_pat, global_collect, Id, Import, ImportKind}; use crate::const_replace::ConstReplacerVisitor; use crate::dependency_analysis::{ - analyze_root_dependencies, build_root_var_usage_map, find_migratable_vars, - topological_sort_variables, RootVarDecl, + analyze_root_dependencies, build_root_var_usage_map, find_migratable_vars, RootVarDecl, + RootVarDependency, }; use crate::entry_strategy::EntryPolicy; use crate::filter_exports::StripExportsVisitor; use crate::props_destructuring::transform_props_destructuring; use crate::rename_imports::RenameTransform; -use crate::transform::{QwikTransform, QwikTransformOptions, Segment, SegmentKind}; +use crate::transform::{ + create_synthetic_named_export, QwikTransform, QwikTransformOptions, Segment, SegmentKind, +}; use crate::utils::{Diagnostic, DiagnosticCategory, DiagnosticScope, SourceLocation}; +use crate::words::{_INLINED_QRL_DEV, _NOOP_QRL_DEV, _QRL_DEV}; use crate::EntryStrategy; +use indexmap::IndexMap; use path_slash::PathExt; use serde::{Deserialize, Serialize}; +use swc_common::{Span, DUMMY_SP}; use anyhow::{Context, Error}; @@ -387,16 +392,19 @@ pub fn transform_code(config: TransformCodeOptions) -> Result Result Result>(path: P) -> PathBuf { /// Returns the set of Id's that were migrated, so they can be removed from root exports. fn apply_variable_migration( segments: &mut [Segment], - module: &ast::Module, - global_collect: &crate::collector::GlobalCollect, + module: &mut ast::Module, + global_collect: &mut crate::collector::GlobalCollect, ) -> std::collections::HashSet { // Analyze root variable dependencies let root_dependencies = analyze_root_dependencies(module, global_collect); @@ -817,8 +867,13 @@ fn apply_variable_migration( let root_var_usage = build_root_var_usage_map(segments, &root_dependencies); // Find migratable variables: those used by exactly one segment and not exported + // This returns a BTreeMap for deterministic iteration order let migratable = find_migratable_vars(segments, &root_dependencies, &root_var_usage); + // PHASE 1: Pre-declare all needed auto-exports BEFORE migration + // This ensures all dependencies are known upfront, preventing surprises during migration + precompute_and_declare_auto_exports(module, global_collect, &migratable, &root_dependencies); + let mut migrated_ids = std::collections::HashSet::new(); // For each segment with migratable variables, extract and populate their declarations @@ -827,8 +882,10 @@ fn apply_variable_migration( continue; } - // Sort variables by their dependencies (topological sort) - let sorted_var_ids = topological_sort_variables(&var_ids, &root_dependencies); + // Sort variables topologically within the migration set so dependencies are declared first. + // Use source order as deterministic tie-breaker. + let sorted_var_ids = sort_migrated_vars_topologically(&var_ids, &root_dependencies); + let cyclic_var_ids = find_cyclic_migrated_vars(&sorted_var_ids, &root_dependencies); // Deduplicate declarations - multiple IDs can point to the same destructuring assignment let mut seen_var_decls = std::collections::HashSet::new(); @@ -846,7 +903,23 @@ fn apply_variable_migration( // Only add this var_decl if we haven't seen it before if seen_var_decls.insert(decl_key) { - let module_item = match &dep_info.decl { + match &dep_info.decl { + RootVarDecl::Var(decl) if cyclic_var_ids.contains(var_id) => { + if let Some(items) = create_cyclic_var_items(decl) { + unique_module_items.extend(items); + } else { + let var_decl = ast::VarDecl { + span: swc_common::DUMMY_SP, + kind: ast::VarDeclKind::Const, + decls: vec![decl.clone()], + declare: false, + ctxt: swc_common::SyntaxContext::empty(), + }; + unique_module_items.push(ast::ModuleItem::Stmt(ast::Stmt::Decl( + ast::Decl::Var(Box::new(var_decl)), + ))); + } + } RootVarDecl::Var(decl) => { let var_decl = ast::VarDecl { span: swc_common::DUMMY_SP, @@ -855,21 +928,26 @@ fn apply_variable_migration( declare: false, ctxt: swc_common::SyntaxContext::empty(), }; - ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(Box::new( - var_decl, - )))) + unique_module_items.push(ast::ModuleItem::Stmt(ast::Stmt::Decl( + ast::Decl::Var(Box::new(var_decl)), + ))); } RootVarDecl::Fn(decl) => { - ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Fn(decl.clone()))) + unique_module_items.push(ast::ModuleItem::Stmt(ast::Stmt::Decl( + ast::Decl::Fn(decl.clone()), + ))); } RootVarDecl::Class(decl) => { - ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Class(decl.clone()))) + unique_module_items.push(ast::ModuleItem::Stmt(ast::Stmt::Decl( + ast::Decl::Class(decl.clone()), + ))); } RootVarDecl::TsEnum(decl) => { - ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::TsEnum(decl.clone()))) + unique_module_items.push(ast::ModuleItem::Stmt(ast::Stmt::Decl( + ast::Decl::TsEnum(decl.clone()), + ))); } - }; - unique_module_items.push(module_item); + } } migrated_ids.insert(var_id.clone()); } @@ -893,6 +971,329 @@ fn apply_variable_migration( migrated_ids } +fn has_qrl_pattern(expr: &ast::Expr) -> bool { + match expr { + // Check for component$, routeAction$, routeLoader$, $(...) patterns + ast::Expr::Call(call) => { + // Check if callee is an identifier ending with $ + if let ast::Callee::Expr(box ast::Expr::Ident(ident)) = &call.callee { + let name = ident.sym.as_ref(); + if name.ends_with('$') { + return true; + } + } + // Recursively check arguments + call.args.iter().any(|arg| has_qrl_pattern(&arg.expr)) + } + // Recursively check nested expressions + ast::Expr::Paren(paren) => has_qrl_pattern(&paren.expr), + ast::Expr::Seq(seq) => seq.exprs.iter().any(|e| has_qrl_pattern(e)), + ast::Expr::Cond(cond) => { + has_qrl_pattern(&cond.test) || has_qrl_pattern(&cond.cons) || has_qrl_pattern(&cond.alt) + } + ast::Expr::Bin(bin) => has_qrl_pattern(&bin.left) || has_qrl_pattern(&bin.right), + ast::Expr::Unary(unary) => has_qrl_pattern(&unary.arg), + ast::Expr::Update(update) => has_qrl_pattern(&update.arg), + ast::Expr::Member(member) => has_qrl_pattern(&member.obj), + ast::Expr::Array(array) => array + .elems + .iter() + .any(|elem| elem.as_ref().is_some_and(|e| has_qrl_pattern(&e.expr))), + ast::Expr::Object(obj) => obj.props.iter().any(|prop| match prop { + ast::PropOrSpread::Prop(p) => match &**p { + ast::Prop::KeyValue(kv) => has_qrl_pattern(&kv.value), + ast::Prop::Shorthand(_) => false, + ast::Prop::Assign(assign) => has_qrl_pattern(&assign.value), + ast::Prop::Getter(_) | ast::Prop::Setter(_) | ast::Prop::Method(_) => false, + }, + ast::PropOrSpread::Spread(_) => false, + }), + ast::Expr::Arrow(arrow) => { + match &*arrow.body { + ast::BlockStmtOrExpr::BlockStmt(_) => false, // Content handled by visitor + ast::BlockStmtOrExpr::Expr(e) => has_qrl_pattern(e), + } + } + _ => false, + } +} + +fn find_cyclic_migrated_vars( + var_ids: &[Id], + root_dependencies: &std::collections::HashMap, +) -> std::collections::HashSet { + let var_set: std::collections::HashSet = var_ids.iter().cloned().collect(); + let mut graph: std::collections::HashMap> = std::collections::HashMap::new(); + + for var_id in var_ids { + let deps = root_dependencies + .get(var_id) + .map(|dep_info| { + dep_info + .depends_on + .iter() + .filter(|dep| var_set.contains(*dep)) + .cloned() + .collect::>() + }) + .unwrap_or_default(); + graph.insert(var_id.clone(), deps); + } + + let mut cyclic = std::collections::HashSet::new(); + for var_id in var_ids { + if let Some(deps) = graph.get(var_id) { + for dep in deps { + if dep == var_id { + cyclic.insert(var_id.clone()); + break; + } + + let mut visited = std::collections::HashSet::new(); + if path_exists(dep, var_id, &graph, &mut visited) { + cyclic.insert(var_id.clone()); + break; + } + } + } + + // Also mark as cyclic if initializer contains QRL patterns, + // since these will create synthetic dependencies during transformation + // that could cause forward references + if let Some(dep_info) = root_dependencies.get(var_id) { + if let RootVarDecl::Var(decl) = &dep_info.decl { + if let Some(init) = &decl.init { + if has_qrl_pattern(init) && var_ids.len() > 1 { + // Only mark as cyclic if there are multiple vars being migrated + // to ensure safe ordering with two-phase emission + cyclic.insert(var_id.clone()); + } + } + } + } + } + + cyclic +} + +fn path_exists( + start: &Id, + target: &Id, + graph: &std::collections::HashMap>, + visited: &mut std::collections::HashSet, +) -> bool { + if start == target { + return true; + } + + if !visited.insert(start.clone()) { + return false; + } + + if let Some(next_nodes) = graph.get(start) { + for next in next_nodes { + if path_exists(next, target, graph, visited) { + return true; + } + } + } + + false +} + +fn create_cyclic_var_items(decl: &ast::VarDeclarator) -> Option> { + let ast::Pat::Ident(binding_ident) = &decl.name else { + return None; + }; + let init = decl.init.clone()?; + + let ident = binding_ident.id.clone(); + let ident_for_assign = ident.clone(); + let ident_for_let = ident; + + let let_decl = ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(Box::new(ast::VarDecl { + span: swc_common::DUMMY_SP, + kind: ast::VarDeclKind::Let, + decls: vec![ast::VarDeclarator { + span: decl.span, + name: ast::Pat::Ident(ast::BindingIdent { + id: ident_for_let, + type_ann: None, + }), + init: None, + definite: false, + }], + declare: false, + ctxt: swc_common::SyntaxContext::empty(), + })))); + + let assign_stmt = ast::ModuleItem::Stmt(ast::Stmt::Expr(ast::ExprStmt { + span: swc_common::DUMMY_SP, + expr: Box::new(ast::Expr::Assign(ast::AssignExpr { + span: swc_common::DUMMY_SP, + op: ast::AssignOp::Assign, + left: ast::AssignTarget::Simple(ast::SimpleAssignTarget::Ident(ast::BindingIdent { + id: ident_for_assign, + type_ann: None, + })), + right: init, + })), + })); + + Some(vec![let_decl, assign_stmt]) +} + +fn sort_migrated_vars_topologically( + var_ids: &[Id], + root_dependencies: &std::collections::HashMap, +) -> Vec { + if var_ids.len() <= 1 { + return var_ids.to_vec(); + } + + let var_set: std::collections::HashSet = var_ids.iter().cloned().collect(); + let mut indegree: std::collections::HashMap = + var_ids.iter().cloned().map(|id| (id, 0usize)).collect(); + let mut outgoing: std::collections::HashMap> = + var_ids.iter().cloned().map(|id| (id, Vec::new())).collect(); + + for var_id in var_ids { + if let Some(dep_info) = root_dependencies.get(var_id) { + for dep_id in &dep_info.depends_on { + // For dependencies, ignore self-references (a variable depending on itself) + // These create cycles that can't be topologically sorted + if dep_id == var_id { + continue; + } + if !var_set.contains(dep_id) { + continue; + } + if let Some(out) = outgoing.get_mut(dep_id) { + out.push(var_id.clone()); + } + if let Some(deg) = indegree.get_mut(var_id) { + *deg += 1; + } + } + } + } + + let sort_key = |var_id: &Id| { + let span = root_dependencies + .get(var_id) + .map(|dep| root_decl_span(&dep.decl)) + .unwrap_or(DUMMY_SP); + (span.lo.0, span.hi.0, var_id.0.to_string()) + }; + + let mut ready: Vec = indegree + .iter() + .filter_map(|(id, deg)| if *deg == 0 { Some(id.clone()) } else { None }) + .collect(); + ready.sort_by_key(&sort_key); + + let mut result = Vec::with_capacity(var_ids.len()); + while let Some(next) = ready.first().cloned() { + ready.remove(0); + result.push(next.clone()); + + if let Some(children) = outgoing.get(&next) { + for child in children { + if let Some(deg) = indegree.get_mut(child) { + *deg = deg.saturating_sub(1); + if *deg == 0 { + ready.push(child.clone()); + } + } + } + } + ready.sort_by_key(&sort_key); + } + + if result.len() == var_ids.len() { + result + } else { + let mut fallback = var_ids.to_vec(); + fallback.sort_by_key(sort_key); + fallback + } +} + +/// This runs BEFORE the actual variable migration to ensure all dependencies are known upfront. +/// This prevents issues where migrated variables have dependencies that weren't exported yet. +fn precompute_and_declare_auto_exports( + module: &mut ast::Module, + global_collect: &mut crate::collector::GlobalCollect, + migratable: &std::collections::BTreeMap>, + root_dependencies: &std::collections::HashMap, +) { + if migratable.is_empty() { + return; + } + + // Build a map of which segment each variable is being migrated to + let segment_assignment: std::collections::BTreeMap = migratable + .iter() + .flat_map(|(seg_idx, vars)| vars.iter().map(move |var_id| (var_id.clone(), *seg_idx))) + .collect(); + + let mut exports_to_declare = std::collections::BTreeMap::new(); + + // Step 1: Analyze what segments need and identify required exports + for (seg_idx, vars) in migratable { + for var_id in vars { + if let Some(dep_info) = root_dependencies.get(var_id) { + // Step 2: Check if dependencies of this variable need to be exported + for dep_id in &dep_info.depends_on { + // Skip if dependency is not in root, or if it's being migrated to same segment + if !global_collect.root.contains_key(dep_id) { + continue; + } + + if let Some(dep_segment) = segment_assignment.get(dep_id) { + // Dependency is also being migrated to same segment - no export needed + if *dep_segment == *seg_idx { + continue; + } + } + + // Check if dependency is already imported/exported + if let Some(dep_info) = root_dependencies.get(dep_id) { + if dep_info.is_imported || dep_info.is_exported { + continue; + } + } + + // This dependency needs to be exported + if !exports_to_declare.contains_key(dep_id) { + exports_to_declare.insert(dep_id.clone(), format!("_auto_{}", dep_id.0)); + } + } + } + } + } + + // Step 3: Now declare all exports we computed + // This happens before any variable migration, so all dependencies are known upfront + for (id, exported_name) in exports_to_declare { + if global_collect.add_export(id.clone(), Some(exported_name.clone().into())) { + module.body.push(create_synthetic_named_export( + &id, + Some(exported_name.into()), + )); + } + } +} + +fn root_decl_span(decl: &RootVarDecl) -> Span { + match decl { + RootVarDecl::Var(var) => var.span, + RootVarDecl::Fn(func) => func.function.span, + RootVarDecl::Class(class) => class.class.span, + RootVarDecl::TsEnum(enu) => enu.span, + } +} + /// Removes exports and variable declarations for migrated variables from the root module. /// These variables are now defined in their respective segment files. fn remove_migrated_exports(module: &mut ast::Module, migrated_ids: &std::collections::HashSet) { @@ -900,10 +1301,6 @@ fn remove_migrated_exports(module: &mut ast::Module, migrated_ids: &std::collect return; } - // Extract just the symbol names for comparison (ignore SyntaxContext) - let migrated_syms: std::collections::HashSet<_> = - migrated_ids.iter().map(|(sym, _)| sym.clone()).collect(); - module.body.retain_mut(|item| { match item { // Remove export statements for migrated variables @@ -911,7 +1308,7 @@ fn remove_migrated_exports(module: &mut ast::Module, migrated_ids: &std::collect export.specifiers.retain(|spec| { if let ast::ExportSpecifier::Named(named) = spec { if let ast::ModuleExportName::Ident(orig_ident) = &named.orig { - !migrated_syms.contains(&orig_ident.sym) + !migrated_ids.contains(&(orig_ident.sym.clone(), orig_ident.ctxt)) } else { true } @@ -927,21 +1324,179 @@ fn remove_migrated_exports(module: &mut ast::Module, migrated_ids: &std::collect var_decl.decls.retain(|decl| { let mut ids = Vec::new(); let _ = collect_from_pat(&decl.name, &mut ids); - !ids.iter().any(|(id, _)| migrated_syms.contains(&id.0)) + !ids.iter().any(|(id, _)| migrated_ids.contains(id)) }); // Return true only if there are declarators left !var_decl.decls.is_empty() } ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Fn(function))) => { - !migrated_syms.contains(&function.ident.sym) + !migrated_ids.contains(&(function.ident.sym.clone(), function.ident.ctxt)) } ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Class(class))) => { - !migrated_syms.contains(&class.ident.sym) + !migrated_ids.contains(&(class.ident.sym.clone(), class.ident.ctxt)) } ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::TsEnum(enu))) => { - !migrated_syms.contains(&enu.id.sym) + !migrated_ids.contains(&(enu.id.sym.clone(), enu.id.ctxt)) } _ => true, } }); } + +#[cfg(test)] +mod migration_cleanup_tests { + use super::*; + use std::collections::HashSet; + use swc_atoms::{atom, Atom}; + use swc_common::{Globals, Mark, SyntaxContext, DUMMY_SP, GLOBALS}; + + #[test] + fn remove_migrated_exports_keeps_same_symbol_different_context() { + GLOBALS.set(&Globals::new(), || { + let ctxt_a = SyntaxContext::empty(); + let ctxt_b = SyntaxContext::empty().apply_mark(Mark::new()); + + let ident_a = ast::Ident::new(atom!("RouteStateContext"), DUMMY_SP, ctxt_a); + let ident_b = ast::Ident::new(atom!("RouteStateContext"), DUMMY_SP, ctxt_b); + + let make_decl = |ident: ast::Ident, value: &str| { + let var_decl = ast::VarDecl { + span: DUMMY_SP, + ctxt: Default::default(), + kind: ast::VarDeclKind::Const, + declare: false, + decls: vec![ast::VarDeclarator { + span: DUMMY_SP, + name: ast::Pat::Ident(ast::BindingIdent { + id: ident, + type_ann: None, + }), + init: Some(Box::new(ast::Expr::Lit(ast::Lit::Str(ast::Str { + span: DUMMY_SP, + value: Atom::from(value), + raw: None, + })))), + definite: false, + }], + }; + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(Box::new(var_decl)))) + }; + + let mut module = ast::Module { + span: DUMMY_SP, + shebang: None, + body: vec![ + make_decl(ident_a.clone(), "a"), + make_decl(ident_b.clone(), "b"), + ], + }; + + let mut migrated_ids: HashSet = HashSet::new(); + migrated_ids.insert((ident_a.sym.clone(), ident_a.ctxt)); + + remove_migrated_exports(&mut module, &migrated_ids); + + assert_eq!(module.body.len(), 1); + match &module.body[0] { + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(var_decl))) => { + assert_eq!(var_decl.decls.len(), 1); + if let ast::Pat::Ident(binding) = &var_decl.decls[0].name { + assert_eq!(binding.id.sym, atom!("RouteStateContext")); + assert_eq!(binding.id.ctxt, ctxt_b); + } else { + panic!("expected ident pattern"); + } + } + _ => panic!("expected var decl"), + } + }); + } + + #[test] + fn find_cyclic_migrated_vars_detects_self_and_mutual_cycles() { + let id_a: Id = (atom!("a"), SyntaxContext::empty()); + let id_b: Id = (atom!("b"), SyntaxContext::empty()); + let id_c: Id = (atom!("c"), SyntaxContext::empty()); + + let mk_decl = |name: &str| { + RootVarDecl::Var(ast::VarDeclarator { + span: DUMMY_SP, + name: ast::Pat::Ident(ast::BindingIdent { + id: ast::Ident::new(name.into(), DUMMY_SP, SyntaxContext::empty()), + type_ann: None, + }), + init: None, + definite: false, + }) + }; + + let mut deps = HashMap::new(); + deps.insert( + id_a.clone(), + RootVarDependency { + decl: mk_decl("a"), + is_imported: false, + is_exported: false, + depends_on: vec![id_a.clone()], + }, + ); + deps.insert( + id_b.clone(), + RootVarDependency { + decl: mk_decl("b"), + is_imported: false, + is_exported: false, + depends_on: vec![id_c.clone()], + }, + ); + deps.insert( + id_c.clone(), + RootVarDependency { + decl: mk_decl("c"), + is_imported: false, + is_exported: false, + depends_on: vec![id_b.clone()], + }, + ); + + let cyclic = find_cyclic_migrated_vars(&[id_a.clone(), id_b.clone(), id_c.clone()], &deps); + assert!(cyclic.contains(&id_a)); + assert!(cyclic.contains(&id_b)); + assert!(cyclic.contains(&id_c)); + } + + #[test] + fn create_cyclic_var_items_emits_let_then_assign() { + let decl = ast::VarDeclarator { + span: DUMMY_SP, + name: ast::Pat::Ident(ast::BindingIdent { + id: ast::Ident::new(atom!("foo"), DUMMY_SP, SyntaxContext::empty()), + type_ann: None, + }), + init: Some(Box::new(ast::Expr::Lit(ast::Lit::Num(ast::Number { + span: DUMMY_SP, + value: 1.0, + raw: None, + })))), + definite: false, + }; + + let items = create_cyclic_var_items(&decl).expect("should build cyclic items"); + assert_eq!(items.len(), 2); + + match &items[0] { + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(var_decl))) => { + assert_eq!(var_decl.kind, ast::VarDeclKind::Let); + assert_eq!(var_decl.decls.len(), 1); + } + _ => panic!("expected leading let declaration"), + } + + match &items[1] { + ast::ModuleItem::Stmt(ast::Stmt::Expr(ast::ExprStmt { expr, .. })) => { + assert!(matches!(&**expr, ast::Expr::Assign(_))); + } + _ => panic!("expected trailing assignment statement"), + } + } +} diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__component_level_self_referential_qrl.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__component_level_self_referential_qrl.snap new file mode 100644 index 00000000000..9419fdfce7b --- /dev/null +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__component_level_self_referential_qrl.snap @@ -0,0 +1,172 @@ +--- +source: packages/qwik/src/optimizer/core/src/test.rs +assertion_line: 5866 +expression: output +--- +==INPUT== + + +import { component$, useAsync$ } from '@qwik.dev/core'; + +// Component-level self-referential component +export const Foo = component$((props) => { + const sig = useAsync$(async ({cleanup}) => { + const timer = setInterval(() => { + sig.value++; + }, 1000); + cleanup(() => clearInterval(timer)); + return 0; + }); + const other = useAsync$(async ({cleanup}) => { + const timer = setInterval(() => { + other.value++; + }, 900); + cleanup(() => clearInterval(timer)); + return 0; + }); + return ( +
+ {other.value} +
+ ); +}); + +============================= test.tsx_Foo_component_HTDRsvUbLiE.tsx (ENTRY POINT)== + +import { qrl } from "@qwik.dev/core"; +import { useAsyncQrl } from "@qwik.dev/core"; +const i_f0BGwWm4eeY = ()=>import("./test.tsx_Foo_component_sig_useAsync_f0BGwWm4eeY"); +const i_fsHooibmyyE = ()=>import("./test.tsx_Foo_component_other_useAsync_fsHooibmyyE"); +export const Foo_component_HTDRsvUbLiE = (props)=>{ + const _ref = {}; + _ref.sig = useAsyncQrl(/*#__PURE__*/ qrl(i_f0BGwWm4eeY, "Foo_component_sig_useAsync_f0BGwWm4eeY", [ + _ref.sig + ])); + const { sig } = _ref; + _ref.other = useAsyncQrl(/*#__PURE__*/ qrl(i_fsHooibmyyE, "Foo_component_other_useAsync_fsHooibmyyE", [ + _ref.other + ])); + const { other } = _ref; + return
+ {other.value} +
; +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;yCAI8B,CAAC;IAC9B;eAAY;;;IAAZ,QAAM;iBAOQ;;;IAAd,QAAM;IAON,QACE,IAAI;GACJ,CAAC,MAAM,KAAK,CAAC;EACd,EAAE;AAEJ\"}") +/* +{ + "origin": "test.tsx", + "name": "Foo_component_HTDRsvUbLiE", + "entry": null, + "displayName": "test.tsx_Foo_component", + "hash": "HTDRsvUbLiE", + "canonicalFilename": "test.tsx_Foo_component_HTDRsvUbLiE", + "path": "", + "extension": "tsx", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 137, + 534 + ], + "paramNames": [ + "props" + ] +} +*/ +============================= test.tsx_Foo_component_other_useAsync_fsHooibmyyE.tsx (ENTRY POINT)== + +import { _captures } from "@qwik.dev/core"; +export const Foo_component_other_useAsync_fsHooibmyyE = async (_rawProps)=>{ + const other = _captures[0]; + const timer = setInterval(()=>{ + other.value++; + }, 900); + _rawProps.cleanup(()=>clearInterval(timer)); + return 0; +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";wDAYyB;;IACvB,MAAM,QAAQ,YAAY;QACzB,MAAM,KAAK;IACZ,GAAG;IACH,UAJ+B,QAIvB,IAAM,cAAc;IAC5B,OAAO\"}") +/* +{ + "origin": "test.tsx", + "name": "Foo_component_other_useAsync_fsHooibmyyE", + "entry": null, + "displayName": "test.tsx_Foo_component_other_useAsync", + "hash": "fsHooibmyyE", + "canonicalFilename": "test.tsx_Foo_component_other_useAsync_fsHooibmyyE", + "path": "", + "extension": "tsx", + "parent": "Foo_component_HTDRsvUbLiE", + "ctxKind": "function", + "ctxName": "useAsync$", + "captures": true, + "loc": [ + 341, + 482 + ], + "paramNames": [ + "_rawProps" + ], + "captureNames": [ + "other" + ] +} +*/ +============================= test.tsx == + +import { componentQrl } from "@qwik.dev/core"; +import { qrl } from "@qwik.dev/core"; +const _qrl_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE"); +// Component-level self-referential component +export const Foo = /*#__PURE__*/ componentQrl(_qrl_Foo_component_HTDRsvUbLiE); + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6CAA6C;AAC7C,OAAO,MAAM,oBAAM,6CAoBhB\"}") +============================= test.tsx_Foo_component_sig_useAsync_f0BGwWm4eeY.tsx (ENTRY POINT)== + +import { _captures } from "@qwik.dev/core"; +export const Foo_component_sig_useAsync_f0BGwWm4eeY = async (_rawProps)=>{ + const sig = _captures[0]; + const timer = setInterval(()=>{ + sig.value++; + }, 1000); + _rawProps.cleanup(()=>clearInterval(timer)); + return 0; +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";sDAKuB;;IACrB,MAAM,QAAQ,YAAY;QACzB,IAAI,KAAK;IACV,GAAG;IACH,UAJ6B,QAIrB,IAAM,cAAc;IAC5B,OAAO\"}") +/* +{ + "origin": "test.tsx", + "name": "Foo_component_sig_useAsync_f0BGwWm4eeY", + "entry": null, + "displayName": "test.tsx_Foo_component_sig_useAsync", + "hash": "f0BGwWm4eeY", + "canonicalFilename": "test.tsx_Foo_component_sig_useAsync_f0BGwWm4eeY", + "path": "", + "extension": "tsx", + "parent": "Foo_component_HTDRsvUbLiE", + "ctxKind": "function", + "ctxName": "useAsync$", + "captures": true, + "loc": [ + 173, + 313 + ], + "paramNames": [ + "_rawProps" + ], + "captureNames": [ + "sig" + ] +} +*/ +== DIAGNOSTICS == + +[] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props.snap index 4f23be5f3af..6bf6ecb7ce3 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3715 +assertion_line: 3726 expression: output -snapshot_kind: text --- ==INPUT== @@ -21,11 +20,11 @@ snapshot_kind: text import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEE,6BAAe,6EAOZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEE,6BAAe,8CAOZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props2.snap index 9c338c026a2..6c908f94ab1 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props2.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3736 +assertion_line: 3747 expression: output -snapshot_kind: text --- ==INPUT== @@ -22,11 +21,11 @@ snapshot_kind: text import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEE,6BAAe,6EAQZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEE,6BAAe,8CAQZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props3.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props3.snap index 884899ebb2a..37c1743a9ac 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props3.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props3.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3759 +assertion_line: 3769 expression: output --- ==INPUT== @@ -21,11 +21,11 @@ expression: output import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEE,6BAAe,6EAQZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEE,6BAAe,8CAQZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt.snap index 5191cbef279..27c3f92c164 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3652 +assertion_line: 3662 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt2.snap index 69fb6188adc..239743b158c 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt2.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3674 +assertion_line: 3684 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_expr_stmt.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_expr_stmt.snap index 61c78ce90ec..bc81da480f4 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_expr_stmt.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_expr_stmt.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3697 +assertion_line: 3707 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_1.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_1.snap index d4f02a01fe1..8f4e7bc7dd3 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_1.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_1.snap @@ -1,71 +1,79 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 91 +assertion_line: 92 expression: output -snapshot_kind: text --- ==INPUT== import { $, component, onRender } from '@qwik.dev/core'; -export const renderHeader = $(() => { +export const renderHeader1 = $(() => { return (
console.log(ctx))}/> ); }); -const renderHeader = component($(() => { +const renderHeader2 = component($(() => { console.log("mount"); return render; })); -============================= test.tsx_renderHeader_zBbHWn4e8Cg.tsx (ENTRY POINT)== +============================= test.tsx_renderHeader1_div_onClick_USi8k1jUb40.tsx (ENTRY POINT)== -import { qrl } from "@qwik.dev/core"; -const i_fV2uzAL99u4 = ()=>import("./test.tsx_renderHeader_div_onClick_fV2uzAL99u4"); -export const renderHeader_zBbHWn4e8Cg = ()=>{ - return
; -}; +export const renderHeader1_div_onClick_USi8k1jUb40 = (ctx)=>console.log(ctx); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;wCAG8B;IAC7B,QACE,IAAI;AAEP\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"qDAKkB,CAAC,MAAQ,QAAQ,GAAG,CAAC\"}") /* { "origin": "test.tsx", - "name": "renderHeader_zBbHWn4e8Cg", + "name": "renderHeader1_div_onClick_USi8k1jUb40", "entry": null, - "displayName": "test.tsx_renderHeader", - "hash": "zBbHWn4e8Cg", - "canonicalFilename": "test.tsx_renderHeader_zBbHWn4e8Cg", + "displayName": "test.tsx_renderHeader1_div_onClick", + "hash": "USi8k1jUb40", + "canonicalFilename": "test.tsx_renderHeader1_div_onClick_USi8k1jUb40", "path": "", "extension": "tsx", - "parent": null, + "parent": "renderHeader1_jMxQsjbyDss", "ctxKind": "function", "ctxName": "$", "captures": false, "loc": [ - 90, - 161 + 127, + 152 + ], + "paramNames": [ + "ctx" ] } */ -============================= test.tsx_renderHeader_component_U6Kkv07sbpQ.tsx (ENTRY POINT)== +============================= test.tsx == -export const renderHeader_component_U6Kkv07sbpQ = ()=>{ - console.log("mount"); - return render; +import { qrl } from "@qwik.dev/core"; +import { component } from '@qwik.dev/core'; +export const renderHeader1 = /*#__PURE__*/ qrl(()=>import("./test.tsx_renderHeader1_jMxQsjbyDss"), "renderHeader1_jMxQsjbyDss"); +component(/*#__PURE__*/ qrl(()=>import("./test.tsx_renderHeader2_component_Ay6ibkfFYsw"), "renderHeader2_component_Ay6ibkfFYsw")); + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";AACA,SAAY,SAAS,QAAkB,iBAAiB;AAExD,OAAO,MAAM,mHAIV;AACmB\"}") +============================= test.tsx_renderHeader1_jMxQsjbyDss.tsx (ENTRY POINT)== + +import { qrl } from "@qwik.dev/core"; +const _qrl_renderHeader1_div_onClick_USi8k1jUb40 = /*#__PURE__*/ qrl(()=>import("./test.tsx_renderHeader1_div_onClick_USi8k1jUb40"), "renderHeader1_div_onClick_USi8k1jUb40"); +export const renderHeader1_jMxQsjbyDss = ()=>{ + return
; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"kDAQiC;IAChC,QAAQ,GAAG,CAAC;IACZ,OAAO;AACR\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;yCAG+B;IAC9B,QACE,IAAI;AAEP\"}") /* { "origin": "test.tsx", - "name": "renderHeader_component_U6Kkv07sbpQ", + "name": "renderHeader1_jMxQsjbyDss", "entry": null, - "displayName": "test.tsx_renderHeader_component", - "hash": "U6Kkv07sbpQ", - "canonicalFilename": "test.tsx_renderHeader_component_U6Kkv07sbpQ", + "displayName": "test.tsx_renderHeader1", + "hash": "jMxQsjbyDss", + "canonicalFilename": "test.tsx_renderHeader1_jMxQsjbyDss", "path": "", "extension": "tsx", "parent": null, @@ -73,48 +81,37 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma "ctxName": "$", "captures": false, "loc": [ - 197, - 245 + 91, + 162 ] } */ -============================= test.tsx == - -import { qrl } from "@qwik.dev/core"; -const i_U6Kkv07sbpQ = ()=>import("./test.tsx_renderHeader_component_U6Kkv07sbpQ"); -const i_zBbHWn4e8Cg = ()=>import("./test.tsx_renderHeader_zBbHWn4e8Cg"); -import { component } from '@qwik.dev/core'; -export const renderHeader = /*#__PURE__*/ qrl(i_zBbHWn4e8Cg, "renderHeader_zBbHWn4e8Cg"); -const renderHeader = component(/*#__PURE__*/ qrl(i_U6Kkv07sbpQ, "renderHeader_component_U6Kkv07sbpQ")); - - -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AACA,SAAY,SAAS,QAAkB,iBAAiB;AAExD,OAAO,MAAM,4EAIV;AACH,MAAM,eAAe\"}") -============================= test.tsx_renderHeader_div_onClick_fV2uzAL99u4.tsx (ENTRY POINT)== +============================= test.tsx_renderHeader2_component_Ay6ibkfFYsw.tsx (ENTRY POINT)== -export const renderHeader_div_onClick_fV2uzAL99u4 = (ctx)=>console.log(ctx); +export const renderHeader2_component_Ay6ibkfFYsw = ()=>{ + console.log("mount"); + return render; +}; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"oDAKkB,CAAC,MAAQ,QAAQ,GAAG,CAAC\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"mDAQkC;IACjC,QAAQ,GAAG,CAAC;IACZ,OAAO;AACR\"}") /* { "origin": "test.tsx", - "name": "renderHeader_div_onClick_fV2uzAL99u4", + "name": "renderHeader2_component_Ay6ibkfFYsw", "entry": null, - "displayName": "test.tsx_renderHeader_div_onClick", - "hash": "fV2uzAL99u4", - "canonicalFilename": "test.tsx_renderHeader_div_onClick_fV2uzAL99u4", + "displayName": "test.tsx_renderHeader2_component", + "hash": "Ay6ibkfFYsw", + "canonicalFilename": "test.tsx_renderHeader2_component_Ay6ibkfFYsw", "path": "", "extension": "tsx", - "parent": "renderHeader_zBbHWn4e8Cg", + "parent": null, "ctxKind": "function", "ctxName": "$", "captures": false, "loc": [ - 126, - 151 - ], - "paramNames": [ - "ctx" + 199, + 247 ] } */ diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_10.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_10.snap index ed8a7b3ab9c..f07da64d403 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_10.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_10.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 268 +assertion_line: 269 expression: output -snapshot_kind: text --- ==INPUT== @@ -80,8 +79,7 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\" ============================= project/test.tsx == import { qrl } from "@qwik.dev/core"; -const i_WlR3xnI6u38 = ()=>import("./test.tsx_Header_WlR3xnI6u38"); -/*#__PURE__*/ qrl(i_WlR3xnI6u38, "Header_WlR3xnI6u38"); +/*#__PURE__*/ qrl(()=>import("./test.tsx_Header_WlR3xnI6u38"), "Header_WlR3xnI6u38"); Some("{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\"}") diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_11.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_11.snap index f1dce45c4ac..e7829f59a60 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_11.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_11.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 298 +assertion_line: 299 expression: output -snapshot_kind: text --- ==INPUT== @@ -62,15 +61,15 @@ import { Header } from "./test"; import { bar as bbar } from "../state"; import * as dep2 from "dep2"; import { qrl } from "@qwik.dev/core"; -const i_KjD9TCNkNxY = ()=>import("./test.tsx_Header_component_Header_onClick_KjD9TCNkNxY"); +const _qrl_Header_component_Header_onClick_KjD9TCNkNxY = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_Header_onClick_KjD9TCNkNxY"), "Header_component_Header_onClick_KjD9TCNkNxY"); export const Header_component_UVBJuFYfvDo = ()=>{ - return
+ return
{dep2.stuff()}{bbar()}
; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;;;4CAMiC;IAChC,QACE,OAAO,0FAA8B;GACrC,CAAC,KAAK,KAAK,IAAI,OAAO;EACvB,EAAE;AAEJ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;;;4CAMiC;IAChC,QACE,OAAO,2DAA8B;GACrC,CAAC,KAAK,KAAK,IAAI,OAAO;EACvB,EAAE;AAEJ\"}") /* { "origin": "project/test.tsx", @@ -125,13 +124,13 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\" import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_UVBJuFYfvDo = ()=>import("./test.tsx_Header_component_UVBJuFYfvDo"); -const i_wGkRHWXaqjs = ()=>import("./test.tsx_App_component_wGkRHWXaqjs"); -export const Header = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_UVBJuFYfvDo, "Header_component_UVBJuFYfvDo")); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_wGkRHWXaqjs, "App_component_wGkRHWXaqjs")); +const _qrl_App_component_wGkRHWXaqjs = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_wGkRHWXaqjs"), "App_component_wGkRHWXaqjs"); +const _qrl_Header_component_UVBJuFYfvDo = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_UVBJuFYfvDo"), "Header_component_UVBJuFYfvDo"); +export const Header = /*#__PURE__*/ componentQrl(_qrl_Header_component_UVBJuFYfvDo); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_wGkRHWXaqjs); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAMA,OAAO,MAAM,uBAAS,+EAMnB;AAEH,OAAO,MAAM,oBAAM,4EAIhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAMA,OAAO,MAAM,uBAAS,gDAMnB;AAEH,OAAO,MAAM,oBAAM,6CAIhB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_2.snap index ed5bc2f35ba..7d6a6ef0d46 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_2.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 112 +assertion_line: 113 expression: output -snapshot_kind: text --- ==INPUT== @@ -18,10 +17,10 @@ export const Header = component$(() => { ============================= test.tsx_Header_component_J4uyIhaBNR4.tsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; -const i_i7ekvWH3674 = ()=>import("./test.tsx_Header_component_div_onClick_i7ekvWH3674"); +const _qrl_Header_component_div_onClick_i7ekvWH3674 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_div_onClick_i7ekvWH3674"), "Header_component_div_onClick_i7ekvWH3674"); export const Header_component_J4uyIhaBNR4 = ()=>{ console.log("mount"); - return
; + return
; }; @@ -50,11 +49,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_J4uyIhaBNR4 = ()=>import("./test.tsx_Header_component_J4uyIhaBNR4"); -export const Header = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_J4uyIhaBNR4, "Header_component_J4uyIhaBNR4")); +const _qrl_Header_component_J4uyIhaBNR4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_J4uyIhaBNR4"), "Header_component_J4uyIhaBNR4"); +export const Header = /*#__PURE__*/ componentQrl(_qrl_Header_component_J4uyIhaBNR4); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,OAAO,MAAM,uBAAS,+EAKnB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,OAAO,MAAM,uBAAS,gDAKnB\"}") ============================= test.tsx_Header_component_div_onClick_i7ekvWH3674.tsx (ENTRY POINT)== export const Header_component_div_onClick_i7ekvWH3674 = (ctx)=>console.log(ctx); diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_3.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_3.snap index 73d84cf86f0..02ea59792c4 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_3.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_3.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 129 +assertion_line: 130 expression: output -snapshot_kind: text --- ==INPUT== @@ -21,10 +20,10 @@ export const App = () => { ============================= test.tsx_App_Header_component_B9F3YeqcO1w.tsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; -const i_aO7uI7Iw6oQ = ()=>import("./test.tsx_App_Header_component_div_onClick_aO7uI7Iw6oQ"); +const _qrl_App_Header_component_div_onClick_aO7uI7Iw6oQ = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_Header_component_div_onClick_aO7uI7Iw6oQ"), "App_Header_component_div_onClick_aO7uI7Iw6oQ"); export const App_Header_component_B9F3YeqcO1w = ()=>{ console.log("mount"); - return
; + return
; }; @@ -82,9 +81,9 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_B9F3YeqcO1w = ()=>import("./test.tsx_App_Header_component_B9F3YeqcO1w"); +const _qrl_App_Header_component_B9F3YeqcO1w = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_Header_component_B9F3YeqcO1w"), "App_Header_component_B9F3YeqcO1w"); export const App = ()=>{ - const Header = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_B9F3YeqcO1w, "App_Header_component_B9F3YeqcO1w")); + const Header = /*#__PURE__*/ componentQrl(_qrl_App_Header_component_B9F3YeqcO1w); return Header; }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_4.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_4.snap index 39e16a59d8f..8c239a36418 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_4.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_4.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 149 +assertion_line: 150 expression: output -snapshot_kind: text --- ==INPUT== @@ -21,10 +20,10 @@ export function App() { ============================= test.tsx_App_Header_component_B9F3YeqcO1w.tsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; -const i_aO7uI7Iw6oQ = ()=>import("./test.tsx_App_Header_component_div_onClick_aO7uI7Iw6oQ"); +const _qrl_App_Header_component_div_onClick_aO7uI7Iw6oQ = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_Header_component_div_onClick_aO7uI7Iw6oQ"), "App_Header_component_div_onClick_aO7uI7Iw6oQ"); export const App_Header_component_B9F3YeqcO1w = ()=>{ console.log("mount"); - return
; + return
; }; @@ -82,9 +81,9 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_B9F3YeqcO1w = ()=>import("./test.tsx_App_Header_component_B9F3YeqcO1w"); +const _qrl_App_Header_component_B9F3YeqcO1w = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_Header_component_B9F3YeqcO1w"), "App_Header_component_B9F3YeqcO1w"); export function App() { - const Header = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_B9F3YeqcO1w, "App_Header_component_B9F3YeqcO1w")); + const Header = /*#__PURE__*/ componentQrl(_qrl_App_Header_component_B9F3YeqcO1w); return Header; } diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_5.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_5.snap index d308dc6f657..c4bbc3a2a4e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_5.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_5.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 169 +assertion_line: 170 expression: output -snapshot_kind: text --- ==INPUT== @@ -20,16 +19,16 @@ export const Header = component$(() => { ============================= test.tsx_Header_component_J4uyIhaBNR4.tsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; -const i_i7ekvWH3674 = ()=>import("./test.tsx_Header_component_div_onClick_i7ekvWH3674"); +const _qrl_Header_component_div_onClick_i7ekvWH3674 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_div_onClick_i7ekvWH3674"), "Header_component_div_onClick_i7ekvWH3674"); export const Header_component_J4uyIhaBNR4 = ()=>{ return <>
console.log("1")}/> -
+
; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;4CAEiC;IAChC,SACG;GACD,CAAC,IAAI,SAAS,CAAC,MAAQ,QAAQ,GAAG,CAAC,OAAO;GAC1C,CAAC,IAAI,wFAAwC;EAC9C;AAEF\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;4CAEiC;IAChC,SACG;GACD,CAAC,IAAI,SAAS,CAAC,MAAQ,QAAQ,GAAG,CAAC,OAAO;GAC1C,CAAC,IAAI,yDAAwC;EAC9C;AAEF\"}") /* { "origin": "test.tsx", @@ -54,11 +53,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_J4uyIhaBNR4 = ()=>import("./test.tsx_Header_component_J4uyIhaBNR4"); -export const Header = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_J4uyIhaBNR4, "Header_component_J4uyIhaBNR4")); +const _qrl_Header_component_J4uyIhaBNR4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_J4uyIhaBNR4"), "Header_component_J4uyIhaBNR4"); +export const Header = /*#__PURE__*/ componentQrl(_qrl_Header_component_J4uyIhaBNR4); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,OAAO,MAAM,uBAAS,+EAOnB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,OAAO,MAAM,uBAAS,gDAOnB\"}") ============================= test.tsx_Header_component_div_onClick_i7ekvWH3674.tsx (ENTRY POINT)== export const Header_component_div_onClick_i7ekvWH3674 = (ctx)=>console.log("2"); diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_6.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_6.snap index 260741202fa..2c69a4c6e5c 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_6.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_6.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 188 +assertion_line: 189 expression: output -snapshot_kind: text --- ==INPUT== @@ -42,11 +41,10 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx == import { qrl } from "@qwik.dev/core"; -const i_aXUrPXX5Lak = ()=>import("./test.tsx_sym1_aXUrPXX5Lak"); -export const sym1 = /*#__PURE__*/ qrl(i_aXUrPXX5Lak, "sym1_aXUrPXX5Lak"); +export const sym1 = /*#__PURE__*/ qrl(()=>import("./test.tsx_sym1_aXUrPXX5Lak"), "sym1_aXUrPXX5Lak"); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AAEA,OAAO,MAAM,4DAAoC\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";AAEA,OAAO,MAAM,wFAAoC\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_7.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_7.snap index 35aefdd1529..180142a4f18 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_7.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_7.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 200 +assertion_line: 201 expression: output -snapshot_kind: text --- ==INPUT== @@ -25,10 +24,10 @@ const App = component$(() => { ============================= test.tsx_Header_component_J4uyIhaBNR4.tsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; -const i_i7ekvWH3674 = ()=>import("./test.tsx_Header_component_div_onClick_i7ekvWH3674"); +const _qrl_Header_component_div_onClick_i7ekvWH3674 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_div_onClick_i7ekvWH3674"), "Header_component_div_onClick_i7ekvWH3674"); export const Header_component_J4uyIhaBNR4 = ()=>{ console.log("mount"); - return
; + return
; }; @@ -57,13 +56,13 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_J4uyIhaBNR4 = ()=>import("./test.tsx_Header_component_J4uyIhaBNR4"); -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); -export const Header = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_J4uyIhaBNR4, "Header_component_J4uyIhaBNR4")); -/*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +const _qrl_Header_component_J4uyIhaBNR4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_J4uyIhaBNR4"), "Header_component_J4uyIhaBNR4"); +export const Header = /*#__PURE__*/ componentQrl(_qrl_Header_component_J4uyIhaBNR4); +/*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAGA,OAAO,MAAM,uBAAS,+EAKlB;cAEQ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAGA,OAAO,MAAM,uBAAS,gDAKlB;cAEQ\"}") ============================= test.tsx_App_component_ckEPmXZlub0.tsx (ENTRY POINT)== import { Header } from "./test"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_8.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_8.snap index d7aa1244579..5d329918951 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_8.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_8.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 224 +assertion_line: 225 expression: output -snapshot_kind: text --- ==INPUT== @@ -23,9 +22,9 @@ export const Header = component$(() => { ============================= test.tsx_Header_component_J4uyIhaBNR4.tsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; -const i_2B8d0oH9ZWc = ()=>import("./test.tsx_Header_component_1_2B8d0oH9ZWc"); +const _qrl_Header_component_1_2B8d0oH9ZWc = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_1_2B8d0oH9ZWc"), "Header_component_1_2B8d0oH9ZWc"); export const Header_component_J4uyIhaBNR4 = ()=>{ - return /*#__PURE__*/ qrl(i_2B8d0oH9ZWc, "Header_component_1_2B8d0oH9ZWc"); + return _qrl_Header_component_1_2B8d0oH9ZWc; }; @@ -88,11 +87,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_J4uyIhaBNR4 = ()=>import("./test.tsx_Header_component_J4uyIhaBNR4"); -export const Header = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_J4uyIhaBNR4, "Header_component_J4uyIhaBNR4")); +const _qrl_Header_component_J4uyIhaBNR4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_J4uyIhaBNR4"), "Header_component_J4uyIhaBNR4"); +export const Header = /*#__PURE__*/ componentQrl(_qrl_Header_component_J4uyIhaBNR4); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,uBAAS,+EASnB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,uBAAS,gDASnB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_9.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_9.snap index 5160db86aec..fdbe976954e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_9.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_9.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 246 +assertion_line: 247 expression: output -snapshot_kind: text --- ==INPUT== @@ -57,8 +56,7 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx == import { qrl } from "@qwik.dev/core"; -const i_WjUaUQN7Oxg = ()=>import("./test.tsx_Header_WjUaUQN7Oxg"); -/*#__PURE__*/ qrl(i_WjUaUQN7Oxg, "Header_WjUaUQN7Oxg"); +/*#__PURE__*/ qrl(()=>import("./test.tsx_Header_WjUaUQN7Oxg"), "Header_WjUaUQN7Oxg"); Some("{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\"}") diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_build_server.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_build_server.snap index 98ff6e2962c..c4d6651f3f0 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_build_server.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_build_server.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2731 +assertion_line: 2732 expression: output -snapshot_kind: text --- ==INPUT== @@ -43,12 +42,12 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); +const _qrl_s_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "s_ckEPmXZlub0"); export const functionThatNeedsWindow = ()=>{}; -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "s_ckEPmXZlub0")); +export const App = /*#__PURE__*/ componentQrl(_qrl_s_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAQA,OAAO,MAAM,0BAA0B,KAMvC,EAAE;AAEF,OAAO,MAAM,oBAAM,gEAehB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAQA,OAAO,MAAM,0BAA0B,KAMvC,EAAE;AAEF,OAAO,MAAM,oBAAM,iCAehB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.tsx (ENTRY POINT)== import { mongodb } from "mondodb"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_capture_imports.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_capture_imports.snap index fe6d8e5baff..4210d572e04 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_capture_imports.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_capture_imports.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 1024 +assertion_line: 1025 expression: output -snapshot_kind: text --- ==INPUT== @@ -21,11 +20,11 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAMA,OAAO,MAAM,oBAAM,4EAGjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAMA,OAAO,MAAM,oBAAM,6CAGjB\"}") ============================= test.tsx_App_component_useStyles_t35nSa5UV7U.js (ENTRY POINT)== import css1 from "./global.css"; @@ -58,11 +57,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { qrl } from "@qwik.dev/core"; import { useStylesQrl } from "@qwik.dev/core"; -const i_t35nSa5UV7U = ()=>import("./test.tsx_App_component_useStyles_t35nSa5UV7U"); -const i_xBK4W0ZKWe8 = ()=>import("./test.tsx_App_component_useStyles_1_xBK4W0ZKWe8"); +const _qrl_App_component_useStyles_1_xBK4W0ZKWe8 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_useStyles_1_xBK4W0ZKWe8"), "App_component_useStyles_1_xBK4W0ZKWe8"); +const _qrl_App_component_useStyles_t35nSa5UV7U = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_useStyles_t35nSa5UV7U"), "App_component_useStyles_t35nSa5UV7U"); export const App_component_ckEPmXZlub0 = ()=>{ - useStylesQrl(/*#__PURE__*/ qrl(i_t35nSa5UV7U, "App_component_useStyles_t35nSa5UV7U")); - useStylesQrl(/*#__PURE__*/ qrl(i_xBK4W0ZKWe8, "App_component_useStyles_1_xBK4W0ZKWe8")); + useStylesQrl(_qrl_App_component_useStyles_t35nSa5UV7U); + useStylesQrl(_qrl_App_component_useStyles_1_xBK4W0ZKWe8); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_capturing_fn_class.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_capturing_fn_class.snap index 687dabf4e94..43add4115b4 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_capturing_fn_class.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_capturing_fn_class.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 1045 +assertion_line: 1046 expression: output -snapshot_kind: text --- ==INPUT== @@ -29,17 +28,17 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,4EAcjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CAcjB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; -const i_w0t0o3QMovU = ()=>import("./test.tsx_App_component_1_w0t0o3QMovU"); +const _qrl_App_component_1_w0t0o3QMovU = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_1_w0t0o3QMovU"), "App_component_1_w0t0o3QMovU"); export const App_component_ckEPmXZlub0 = ()=>{ - return /*#__PURE__*/ qrl(i_w0t0o3QMovU, "App_component_1_w0t0o3QMovU"); + return _qrl_App_component_1_w0t0o3QMovU; }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_class_name.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_class_name.snap index 130ddd815d7..526da36896a 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_class_name.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_class_name.snap @@ -30,11 +30,11 @@ export const App2 = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_3yveMqbQ3Fs = ()=>import("./test.tsx_App2_component_3yveMqbQ3Fs.js"); -export const App2 = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_3yveMqbQ3Fs, "App2_component_3yveMqbQ3Fs")); +const _qrl_App2_component_3yveMqbQ3Fs = /*#__PURE__*/ qrl(()=>import("./test.tsx_App2_component_3yveMqbQ3Fs.js"), "App2_component_3yveMqbQ3Fs"); +export const App2 = /*#__PURE__*/ componentQrl(_qrl_App2_component_3yveMqbQ3Fs); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,qBAAO,6EAgBjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,qBAAO,8CAgBjB\"}") ============================= test.tsx_App2_component_3yveMqbQ3Fs.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_component_with_event_listeners_inside_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_component_with_event_listeners_inside_loop.snap index db30213586e..b548689b8e4 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_component_with_event_listeners_inside_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_component_with_event_listeners_inside_loop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3980 +assertion_line: 3990 expression: output --- ==INPUT== @@ -108,11 +108,11 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,OAAO,MAAM,oBAAM,4EA+FZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,OAAO,MAAM,oBAAM,6CA+FZ\"}") ============================= test.tsx_App_component_loopForIn_span_q_e_click_adzBGickx1U.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_custom_inlined_functions.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_custom_inlined_functions.snap index 0cfa7617c3b..3dd073cc053 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_custom_inlined_functions.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_custom_inlined_functions.snap @@ -34,20 +34,20 @@ export const Lightweight = (props) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_UIcxVTQF1a8 = ()=>import("./test.tsx_Lightweight_useMemo_UIcxVTQF1a8"); -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); import { wrap, useEffect } from '@qwik.dev/core'; +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +const _qrl_Lightweight_useMemo_UIcxVTQF1a8 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Lightweight_useMemo_UIcxVTQF1a8"), "Lightweight_useMemo_UIcxVTQF1a8"); export const useMemoQrl = (qrt)=>{ useEffect(qrt); }; export const useMemo$ = wrap(useMemoQrl); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); export const Lightweight = (props)=>{ - useMemoQrl(/*#__PURE__*/ qrl(i_UIcxVTQF1a8, "Lightweight_useMemo_UIcxVTQF1a8")); + useMemoQrl(_qrl_Lightweight_useMemo_UIcxVTQF1a8); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AACA,SAAkC,IAAI,EAAE,SAAS,QAAQ,iBAAiB;AAE1E,OAAO,MAAM,aAAa,CAAC;IAC1B,UAAU;AACX,EAAE;AAEF,OAAO,MAAM,WAAW,KAAK,YAAY;AAEzC,OAAO,MAAM,oBAAM,4EAQhB;AAEH,OAAO,MAAM,cAAc,CAAC;IAC3B;AAGD,EAAE\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AACA,SAAkC,IAAI,EAAE,SAAS,QAAQ,iBAAiB;;;AAE1E,OAAO,MAAM,aAAa,CAAC;IAC1B,UAAU;AACX,EAAE;AAEF,OAAO,MAAM,WAAW,KAAK,YAAY;AAEzC,OAAO,MAAM,oBAAM,6CAQhB;AAEH,OAAO,MAAM,cAAc,CAAC;IAC3B;AAGD,EAAE\"}") ============================= test.tsx_App_component_useMemo_6Sc9KVki3Y0.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; @@ -111,8 +111,8 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma */ ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== -import { qrl } from "@qwik.dev/core"; import { useMemoQrl } from "./test"; +import { qrl } from "@qwik.dev/core"; import { useStore } from "@qwik.dev/core"; const i_6Sc9KVki3Y0 = ()=>import("./test.tsx_App_component_useMemo_6Sc9KVki3Y0"); const i_w0t0o3QMovU = ()=>import("./test.tsx_App_component_1_w0t0o3QMovU"); diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dead_code.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dead_code.snap index fbaf3d67858..c487b019bf1 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dead_code.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dead_code.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 449 +assertion_line: 450 expression: output -snapshot_kind: text --- ==INPUT== @@ -57,11 +56,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_HTDRsvUbLiE = ()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"); -export const Foo = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_HTDRsvUbLiE, "Foo_component_HTDRsvUbLiE")); +const _qrl_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE"); +export const Foo = /*#__PURE__*/ componentQrl(_qrl_Foo_component_HTDRsvUbLiE); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA,OAAO,MAAM,oBAAM,4EASjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA,OAAO,MAAM,oBAAM,6CASjB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export.snap index 915925e690c..02ae88c94ec 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export.snap @@ -21,11 +21,11 @@ export default component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_0AM8HPnkNs4 = ()=>import("./[[...slug]].tsx_slug_component_0AM8HPnkNs4.js"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_0AM8HPnkNs4, "slug_component_0AM8HPnkNs4")); +const _qrl_slug_component_0AM8HPnkNs4 = /*#__PURE__*/ qrl(()=>import("./[[...slug]].tsx_slug_component_0AM8HPnkNs4.js"), "slug_component_0AM8HPnkNs4"); +export default /*#__PURE__*/ componentQrl(_qrl_slug_component_0AM8HPnkNs4); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/routes/_repl/[id]/[[...slug]].tsx\"],\"names\":[],\"mappings\":\";;;AAIA,6BAAe,6EAKZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/routes/_repl/[id]/[[...slug]].tsx\"],\"names\":[],\"mappings\":\";;;AAIA,6BAAe,8CAKZ\"}") ============================= src/routes/_repl/[id]/[[...slug]].tsx_slug_component_div_q_e_click_bCwVPYSTQ0w.js (ENTRY POINT)== import { sibling } from "./sibling"; @@ -57,10 +57,10 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/routes/_repl/[id]/[[...sl import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_bCwVPYSTQ0w = ()=>import("./[[...slug]].tsx_slug_component_div_q_e_click_bCwVPYSTQ0w.js"); +const _qrl_slug_component_div_q_e_click_bCwVPYSTQ0w = /*#__PURE__*/ qrl(()=>import("./[[...slug]].tsx_slug_component_div_q_e_click_bCwVPYSTQ0w.js"), "slug_component_div_q_e_click_bCwVPYSTQ0w"); export const slug_component_0AM8HPnkNs4 = ()=>{ return /*#__PURE__*/ _jsxSorted("div", null, { - "q-e:click": /*#__PURE__*/ qrl(i_bCwVPYSTQ0w, "slug_component_div_q_e_click_bCwVPYSTQ0w") + "q-e:click": _qrl_slug_component_div_q_e_click_bCwVPYSTQ0w }, null, 3, "W4_0"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export_index.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export_index.snap index 08ca6076991..924a08a595b 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export_index.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export_index.snap @@ -20,13 +20,15 @@ export default component$(() => { import { componentQrl } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(()=>{ - return
console.log(mongodb), "mongo_component_div_q_e_click_jncbxvZVtWY")}> +const mongo_component_div_q_e_click_jncbxvZVtWY = ()=>console.log(mongodb); +const mongo_component_ouWLj4jA2oI = ()=>{ + return
; -}, "mongo_component_ouWLj4jA2oI")); +}; +export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(mongo_component_ouWLj4jA2oI, "mongo_component_ouWLj4jA2oI")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/components/mongo/index.tsx\"],\"names\":[],\"mappings\":\";;AAGA,6BAAe,sCAAW;IACzB,QACE,IAAI,oCAAU,IAAM,QAAQ,GAAG,CAAC,wDAAU;EAC3C,EAAE;AAEJ,mCAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/components/mongo/index.tsx\"],\"names\":[],\"mappings\":\";;kDAKiB,IAAM,QAAQ,GAAG,CAAC;oCAFT;IACzB,QACE,IAAI,6HAAsC;EAC3C,EAAE;AAEJ;AALA,6BAAe,mGAKZ\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export_invalid_ident.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export_invalid_ident.snap index 910b3aad35c..ef26b3c834e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export_invalid_ident.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export_invalid_ident.snap @@ -46,22 +46,22 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/components/mongo/404.tsx\ import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_zRvoWc98eqo = ()=>import("./404.tsx__404_component_zRvoWc98eqo"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_zRvoWc98eqo, "_404_component_zRvoWc98eqo")); +const _qrl__404_component_zRvoWc98eqo = /*#__PURE__*/ qrl(()=>import("./404.tsx__404_component_zRvoWc98eqo"), "_404_component_zRvoWc98eqo"); +export default /*#__PURE__*/ componentQrl(_qrl__404_component_zRvoWc98eqo); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/components/mongo/404.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,6EAKZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/components/mongo/404.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,8CAKZ\"}") ============================= src/components/mongo/404.tsx__404_component_zRvoWc98eqo.tsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; -const i_aMLnLWtkRhc = ()=>import("./404.tsx__404_component_div_q_e_click_aMLnLWtkRhc"); +const _qrl__404_component_div_q_e_click_aMLnLWtkRhc = /*#__PURE__*/ qrl(()=>import("./404.tsx__404_component_div_q_e_click_aMLnLWtkRhc"), "_404_component_div_q_e_click_aMLnLWtkRhc"); export const _404_component_zRvoWc98eqo = ()=>{ - return
+ return
; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/components/mongo/404.tsx\"],\"names\":[],\"mappings\":\";;0CAG0B;IACzB,QACE,IAAI,yFAAsC;EAC3C,EAAE;AAEJ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/components/mongo/404.tsx\"],\"names\":[],\"mappings\":\";;0CAG0B;IACzB,QACE,IAAI,0DAAsC;EAC3C,EAAE;AAEJ\"}") /* { "origin": "src/components/mongo/404.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_children.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_children.snap index 4e2c5903e8d..65508f0e74c 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_children.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_children.snap @@ -56,15 +56,15 @@ import { _wrapProp } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; import { _fnSignal } from "@qwik.dev/core"; +import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; +import { useStore, mutable } from '@qwik.dev/core'; +import { dep } from './file'; const _hf0 = (p0)=>12 + p0.value; const _hf0_str = "12+p0.value"; const _hf1 = (p0)=>p0.address.city.name; const _hf1_str = "p0.address.city.name"; const _hf2 = (p0)=>p0.address.city.name ? 'true' : 'false'; const _hf2_str = 'p0.address.city.name?"true":"false"'; -import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; -import { useStore, mutable } from '@qwik.dev/core'; -import { dep } from './file'; const TextContent_component_puSwpKXO7Kg = (props)=>{ return /*#__PURE__*/ _jsxSorted(_Fragment, null, null, [ /*#__PURE__*/ _jsxSorted("div", null, null, [ @@ -114,7 +114,7 @@ const App_component_ckEPmXZlub0 = ()=>{ export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(App_component_ckEPmXZlub0, "App_component_ckEPmXZlub0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;mBA2BS,KAAK,GAAO,KAAK;;mBACjB,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI;;mBACvB,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS;;;AA5B5C,SAAqB,QAAQ,EAAE,OAAO,QAAQ,iBAAiB;AAE/D,SAAQ,GAAG,QAAO,SAAS;0CAEW,CAAC;IACtC,qBACC;sBACC,WAAC;YAAI;sBAAU;;sBACf,WAAC;YAAI;sBAAQ;;;AAGhB;AAPA,OAAO,MAAM,4BAAc,+GAOxB;kCAE2B;IAC7B,MAAM,SAAS,UAAU;IACzB,MAAM,QAAQ,SAAS,CAAC;IACxB,qBACC;sBACC,WAAC,mBAAI;sBACL,WAAC,mBAAK,CAAC,IAAI,CAAC;sBACZ,WAAC,mBAAK;sBACN,WAAC,mBAAK;sBACN,WAAC,mBAAK,CAAC,IAAI,EAAE,IAAI;sBACjB,WAAC,mBAAK,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW,KAAK;sBAC7C,WAAC,mBAAK;sBACN,WAAC,6BAAK;sBACN,WAAC;;;sBACD,WAAC;;;sBACD,WAAC;;;sBACD,WAAC,mBAAK;sBACN,WAAC,mBAAK,IAAI,KAAK;sBACf,WAAC,mBAAK,IAAI,KAAK,GAAG;sBAClB,WAAC,mBAAK;sBACN,WAAC,mBAAK,YAAY,KAAK;sBACvB,WAAC,mBAAK,YAAY,KAAK,GAAG;sBAC1B,WAAC,mBAAK,OAAO,KAAK;sBAClB,WAAC,mBAAK,OAAO,KAAK,GAAG;sBACrB,WAAC,mBAAK,QAAQ;sBACd,WAAC,mBAAK,OAAO,KAAK,GAAG;;AAGxB;AA5BA,OAAO,MAAM,oBAAM,+FA4BhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;AACA,SAAqB,QAAQ,EAAE,OAAO,QAAQ,iBAAiB;AAE/D,SAAQ,GAAG,QAAO,SAAS;mBAwBlB,KAAK,GAAO,KAAK;;mBACjB,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI;;mBACvB,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS;;0CAxBN,CAAC;IACtC,qBACC;sBACC,WAAC;YAAI;sBAAU;;sBACf,WAAC;YAAI;sBAAQ;;;AAGhB;AAPA,OAAO,MAAM,4BAAc,+GAOxB;kCAE2B;IAC7B,MAAM,SAAS,UAAU;IACzB,MAAM,QAAQ,SAAS,CAAC;IACxB,qBACC;sBACC,WAAC,mBAAI;sBACL,WAAC,mBAAK,CAAC,IAAI,CAAC;sBACZ,WAAC,mBAAK;sBACN,WAAC,mBAAK;sBACN,WAAC,mBAAK,CAAC,IAAI,EAAE,IAAI;sBACjB,WAAC,mBAAK,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW,KAAK;sBAC7C,WAAC,mBAAK;sBACN,WAAC,6BAAK;sBACN,WAAC;;;sBACD,WAAC;;;sBACD,WAAC;;;sBACD,WAAC,mBAAK;sBACN,WAAC,mBAAK,IAAI,KAAK;sBACf,WAAC,mBAAK,IAAI,KAAK,GAAG;sBAClB,WAAC,mBAAK;sBACN,WAAC,mBAAK,YAAY,KAAK;sBACvB,WAAC,mBAAK,YAAY,KAAK,GAAG;sBAC1B,WAAC,mBAAK,OAAO,KAAK;sBAClB,WAAC,mBAAK,OAAO,KAAK,GAAG;sBACrB,WAAC,mBAAK,QAAQ;sBACd,WAAC,mBAAK,OAAO,KAAK,GAAG;;AAGxB;AA5BA,OAAO,MAAM,oBAAM,+FA4BhB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_cmp.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_cmp.snap index ddaa35309ef..e50f593eadd 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_cmp.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_cmp.snap @@ -54,15 +54,15 @@ import { _wrapProp } from "@qwik.dev/core"; import { _fnSignal } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; +import { useStore, mutable } from '@qwik.dev/core'; +import { dep } from './file'; +import { Cmp } from './cmp'; const _hf0 = (p0)=>12 + p0.value; const _hf0_str = "12+p0.value"; const _hf1 = (p0)=>p0.address.city.name; const _hf1_str = "p0.address.city.name"; const _hf2 = (p0)=>p0.address.city.name ? 'true' : 'false'; const _hf2_str = 'p0.address.city.name?"true":"false"'; -import { useStore, mutable } from '@qwik.dev/core'; -import { dep } from './file'; -import { Cmp } from './cmp'; const App_component_ckEPmXZlub0 = ()=>{ const signal = useSignal(0); const store = useStore({}); @@ -100,7 +100,7 @@ const App_component_ckEPmXZlub0 = ()=>{ export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(App_component_ckEPmXZlub0, "App_component_ckEPmXZlub0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;mBAoBwB,KAAK,GAAO,KAAK;;mBAE/B,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI;;mBACf,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS;;AAtBrD,SAAqB,QAAQ,EAAE,OAAO,QAAQ,iBAAiB;AAE/D,SAAQ,GAAG,QAAO,SAAS;AAC3B,SAAQ,GAAG,QAAO,QAAQ;kCAEI;IAC7B,MAAM,SAAS,UAAU;IACzB,MAAM,QAAQ,SAAS,CAAC;IACxB,qBACC,WAAC;QAmBA,QAAQ;QACR,cAAc,YAAY,KAAK;QAC/B,gBAAgB,YAAY,KAAK,GAAG;QAGpC,UAAU,OAAO,KAAK;QACtB,WAAW,OAAO,KAAK,GAAG;QAC1B,WAAW,QAAQ;QACnB,WAAW,OAAO,KAAK,GAAG;;QA1B1B,YAAW;QACX,aAAa,CAAC,IAAI,CAAC;QACnB,cAAc;QACd,eAAe;QACf,YAAY,CAAC,IAAI,EAAE,IAAI;QACvB,aAAa,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW,KAAK;QAEpD,QAAQ;QACR,WAAW,YAAE;QACb,mBAAmB;;;QAEnB,KAAK;;;QACL,aAAa;;;QAEb,KAAK;QACL,WAAW,IAAI,KAAK;QACpB,aAAa,IAAI,KAAK,GAAG;;AAa5B;AAlCA,OAAO,MAAM,oBAAM,+FAkChB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AACA,SAAqB,QAAQ,EAAE,OAAO,QAAQ,iBAAiB;AAE/D,SAAQ,GAAG,QAAO,SAAS;AAC3B,SAAQ,GAAG,QAAO,QAAQ;mBAgBF,KAAK,GAAO,KAAK;;mBAE/B,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI;;mBACf,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS;;kCAjBvB;IAC7B,MAAM,SAAS,UAAU;IACzB,MAAM,QAAQ,SAAS,CAAC;IACxB,qBACC,WAAC;QAmBA,QAAQ;QACR,cAAc,YAAY,KAAK;QAC/B,gBAAgB,YAAY,KAAK,GAAG;QAGpC,UAAU,OAAO,KAAK;QACtB,WAAW,OAAO,KAAK,GAAG;QAC1B,WAAW,QAAQ;QACnB,WAAW,OAAO,KAAK,GAAG;;QA1B1B,YAAW;QACX,aAAa,CAAC,IAAI,CAAC;QACnB,cAAc;QACd,eAAe;QACf,YAAY,CAAC,IAAI,EAAE,IAAI;QACvB,aAAa,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW,KAAK;QAEpD,QAAQ;QACR,WAAW,YAAE;QACb,mBAAmB;;;QAEnB,KAAK;;;QACL,aAAa;;;QAEb,KAAK;QACL,WAAW,IAAI,KAAK;QACpB,aAAa,IAAI,KAAK,GAAG;;AAa5B;AAlCA,OAAO,MAAM,oBAAM,+FAkChB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_complext_children.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_complext_children.snap index e65ac5255f5..742b7467ad0 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_complext_children.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_complext_children.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2963 +assertion_line: 2964 expression: output -snapshot_kind: text --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_div.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_div.snap index b7881e5a0c4..9a8ed973330 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_div.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_div.snap @@ -65,15 +65,15 @@ import { _fnSignal } from "@qwik.dev/core"; import { _wrapProp } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; +import { useStore, mutable } from '@qwik.dev/core'; +import { dep } from './file'; +import styles from './styles.module.css'; const _hf0 = (p0)=>12 + p0.value; const _hf0_str = "12+p0.value"; const _hf1 = (p0)=>p0.address.city.name; const _hf1_str = "p0.address.city.name"; const _hf2 = (p0)=>p0.address.city.name ? 'true' : 'false'; const _hf2_str = 'p0.address.city.name?"true":"false"'; -import { useStore, mutable } from '@qwik.dev/core'; -import { dep } from './file'; -import styles from './styles.module.css'; const App_component_ckEPmXZlub0 = (props)=>{ const signal = useSignal(0); const store = useStore({}); @@ -120,7 +120,7 @@ const App_component_ckEPmXZlub0 = (props)=>{ export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(App_component_ckEPmXZlub0, "App_component_ckEPmXZlub0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;mBA8BwB,KAAK,GAAO,KAAK;;mBAE/B,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI;;mBACf,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS;;AAhCrD,SAAqB,QAAQ,EAAE,OAAO,QAAQ,iBAAiB;AAE/D,SAAQ,GAAG,QAAO,SAAS;AAC3B,OAAO,YAAY,sBAAsB;kCAEX,CAAC;IAC9B,MAAM,SAAS,UAAU;IACzB,MAAM,QAAQ,SAAS,CAAC;IACxB,MAAM,QAAQ,MAAM,OAAO,CAAC,KAAK;IAEjC,qBACC,WAAC;QACA,OAAO;YACN,MAAM,QAAQ,MAAM;YACpB,KAAK,QAAQ,MAAM;YACnB,SAAS;YACT,QAAQ;QACT;QAqBA,QAAQ;QACR,cAAc,YAAY,KAAK;QAC/B,gBAAgB,YAAY,KAAK,GAAG;QAGpC,UAAU,OAAO,KAAK;QACtB,WAAW,OAAO,KAAK,GAAG;QAC1B,WAAW,QAAQ;QACnB,WAAW,OAAO,KAAK,GAAG;QA3B1B,gBAAgB,OAAO,QAAQ;;QAD/B,aAAa,OAAO,GAAG;QAEvB,YAAW;QACX,aAAa,CAAC,IAAI,CAAC;QACnB,cAAc;QACd,eAAe;QACf,YAAY,CAAC,IAAI,EAAE,IAAI;QACvB,aAAa,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW,KAAK;QAEpD,QAAQ;QACR,WAAW,YAAE;QACb,mBAAmB;;;QAEnB,KAAK;;;QACL,aAAa;;;QAEb,KAAK;QACL,WAAW,IAAI,KAAK;QACpB,aAAa,IAAI,KAAK,GAAG;;AAc5B;AA7CA,OAAO,MAAM,oBAAM,+FA6ChB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AACA,SAAqB,QAAQ,EAAE,OAAO,QAAQ,iBAAiB;AAE/D,SAAQ,GAAG,QAAO,SAAS;AAC3B,OAAO,YAAY,sBAAsB;mBA0BjB,KAAK,GAAO,KAAK;;mBAE/B,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI;;mBACf,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS;;kCA3BvB,CAAC;IAC9B,MAAM,SAAS,UAAU;IACzB,MAAM,QAAQ,SAAS,CAAC;IACxB,MAAM,QAAQ,MAAM,OAAO,CAAC,KAAK;IAEjC,qBACC,WAAC;QACA,OAAO;YACN,MAAM,QAAQ,MAAM;YACpB,KAAK,QAAQ,MAAM;YACnB,SAAS;YACT,QAAQ;QACT;QAqBA,QAAQ;QACR,cAAc,YAAY,KAAK;QAC/B,gBAAgB,YAAY,KAAK,GAAG;QAGpC,UAAU,OAAO,KAAK;QACtB,WAAW,OAAO,KAAK,GAAG;QAC1B,WAAW,QAAQ;QACnB,WAAW,OAAO,KAAK,GAAG;QA3B1B,gBAAgB,OAAO,QAAQ;;QAD/B,aAAa,OAAO,GAAG;QAEvB,YAAW;QACX,aAAa,CAAC,IAAI,CAAC;QACnB,cAAc;QACd,eAAe;QACf,YAAY,CAAC,IAAI,EAAE,IAAI;QACvB,aAAa,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW,KAAK;QAEpD,QAAQ;QACR,WAAW,YAAE;QACb,mBAAmB;;;QAEnB,KAAK;;;QACL,aAAa;;;QAEb,KAAK;QACL,WAAW,IAAI,KAAK;QACpB,aAAa,IAAI,KAAK,GAAG;;AAc5B;AA7CA,OAAO,MAAM,oBAAM,+FA6ChB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_multiple_children.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_multiple_children.snap index 058ec18ca8a..ea8215aa8fe 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_multiple_children.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_multiple_children.snap @@ -47,15 +47,15 @@ import { _jsxSorted } from "@qwik.dev/core"; import { _wrapProp } from "@qwik.dev/core"; import { _fnSignal } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; +import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; +import { useStore, mutable } from '@qwik.dev/core'; +import { dep } from './file'; const _hf0 = (p0)=>12 + p0.value; const _hf0_str = "12+p0.value"; const _hf1 = (p0)=>p0.address.city.name; const _hf1_str = "p0.address.city.name"; const _hf2 = (p0)=>p0.address.city.name ? 'true' : 'false'; const _hf2_str = 'p0.address.city.name?"true":"false"'; -import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; -import { useStore, mutable } from '@qwik.dev/core'; -import { dep } from './file'; const App_component_ckEPmXZlub0 = ()=>{ const signal = useSignal(0); const store = useStore({}); @@ -152,7 +152,7 @@ const App_component_ckEPmXZlub0 = ()=>{ export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(App_component_ckEPmXZlub0, "App_component_ckEPmXZlub0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;mBAkBe,KAAK,GAAO,KAAK;;mBACjB,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI;;mBACvB,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS;;;AAnBlD,SAAqB,QAAQ,EAAE,OAAO,QAAQ,iBAAiB;AAE/D,SAAQ,GAAG,QAAO,SAAS;kCAEG;IAC7B,MAAM,SAAS,UAAU;IACzB,MAAM,QAAQ,SAAS,CAAC;IACxB,qBACC;sBACC,WAAC,mBAAI;sBACL,WAAC;YAAI;YAAO,CAAC,IAAI,CAAC;;sBAClB,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;YAAO,CAAC,IAAI,EAAE,IAAI;;sBACvB,WAAC;YAAI;YAAO,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW,KAAK;;sBACnD,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;sBAAO;;sBACZ,WAAC;YAAI;;;;;sBACL,WAAC;YAAI;;;;;sBACL,WAAC;YAAI;;;;;sBACL,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;YAAO,IAAI,KAAK;;sBACrB,WAAC;YAAI;YAAO,IAAI,KAAK,GAAG;;sBACxB,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;YAAO,YAAY,KAAK;;sBAC7B,WAAC;YAAI;YAAO,YAAY,KAAK,GAAG;;sBAChC,WAAC;YAAI;YAAO,OAAO,KAAK;;sBACxB,WAAC;YAAI;YAAO,OAAO,KAAK,GAAG;;sBAC3B,WAAC;YAAI;YAAO,QAAQ;;sBACpB,WAAC;YAAI;YAAO,OAAO,KAAK,GAAG;;;AAG9B;AA5BA,OAAO,MAAM,oBAAM,+FA4BhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;AACA,SAAqB,QAAQ,EAAE,OAAO,QAAQ,iBAAiB;AAE/D,SAAQ,GAAG,QAAO,SAAS;mBAeZ,KAAK,GAAO,KAAK;;mBACjB,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI;;mBACvB,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS;;kCAfpB;IAC7B,MAAM,SAAS,UAAU;IACzB,MAAM,QAAQ,SAAS,CAAC;IACxB,qBACC;sBACC,WAAC,mBAAI;sBACL,WAAC;YAAI;YAAO,CAAC,IAAI,CAAC;;sBAClB,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;YAAO,CAAC,IAAI,EAAE,IAAI;;sBACvB,WAAC;YAAI;YAAO,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW,KAAK;;sBACnD,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;sBAAO;;sBACZ,WAAC;YAAI;;;;;sBACL,WAAC;YAAI;;;;;sBACL,WAAC;YAAI;;;;;sBACL,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;YAAO,IAAI,KAAK;;sBACrB,WAAC;YAAI;YAAO,IAAI,KAAK,GAAG;;sBACxB,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;YAAO,YAAY,KAAK;;sBAC7B,WAAC;YAAI;YAAO,YAAY,KAAK,GAAG;;sBAChC,WAAC;YAAI;YAAO,OAAO,KAAK;;sBACxB,WAAC;YAAI;YAAO,OAAO,KAAK,GAAG;;sBAC3B,WAAC;YAAI;YAAO,QAAQ;;sBACpB,WAAC;YAAI;YAAO,OAAO,KAAK,GAAG;;;AAG9B;AA5BA,OAAO,MAAM,oBAAM,+FA4BhB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode.snap index d1605b6669e..8557adf0d8e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode.snap @@ -20,30 +20,30 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrlDEV } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrlDEV(i_ckEPmXZlub0, "App_component_ckEPmXZlub0", { +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrlDEV(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0", { file: "/user/qwik/src/test.tsx", lo: 88, hi: 200, displayName: "test.tsx_App_component" -})); +}); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM;;;;;IAMhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;AAGA,OAAO,MAAM,oBAAM,6CAMhB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== import { _jsxSorted } from "@qwik.dev/core"; import { qrlDEV } from "@qwik.dev/core"; -const i_Yl4ybrJWrt4 = ()=>import("./test.tsx_App_component_Cmp_p_q_e_click_Yl4ybrJWrt4"); +const _qrl_App_component_Cmp_p_q_e_click_Yl4ybrJWrt4 = /*#__PURE__*/ qrlDEV(()=>import("./test.tsx_App_component_Cmp_p_q_e_click_Yl4ybrJWrt4"), "App_component_Cmp_p_q_e_click_Yl4ybrJWrt4", { + file: "/user/qwik/src/test.tsx", + lo: 144, + hi: 169, + displayName: "test.tsx_App_component_Cmp_p_q_e_click" +}); export const App_component_ckEPmXZlub0 = ()=>{ return /*#__PURE__*/ _jsxSorted(Cmp, null, null, /*#__PURE__*/ _jsxSorted("p", null, { class: "stuff", - "q-e:click": /*#__PURE__*/ qrlDEV(i_Yl4ybrJWrt4, "App_component_Cmp_p_q_e_click_Yl4ybrJWrt4", { - file: "/user/qwik/src/test.tsx", - lo: 144, - hi: 169, - displayName: "test.tsx_App_component_Cmp_p_q_e_click" - }) + "q-e:click": _qrl_App_component_Cmp_p_q_e_click_Yl4ybrJWrt4 }, "Hello Qwik", 3, null, { fileName: "test.tsx", lineNumber: 7, @@ -56,7 +56,7 @@ export const App_component_ckEPmXZlub0 = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;yCAG8B;IAC7B,qBACC,WAAC,+BACA,WAAC;QAAE,OAAM;QAAQ,WAAQ;;;;;;OAA6B;;;;;;;;;AAGzD\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;yCAG8B;IAC7B,qBACC,WAAC,+BACA,WAAC;QAAE,OAAM;QAAQ,WAAQ;OAA6B;;;;;;;;;AAGzD\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode_inlined.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode_inlined.snap index d76ee6913d5..b4622a7697d 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode_inlined.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode_inlined.snap @@ -21,10 +21,11 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { inlinedQrlDEV } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrlDEV(()=>{ +const App_component_Cmp_p_q_e_click_Yl4ybrJWrt4 = ()=>console.log('warn'); +const App_component_ckEPmXZlub0 = ()=>{ return /*#__PURE__*/ _jsxSorted(Cmp, null, null, /*#__PURE__*/ _jsxSorted("p", null, { class: "stuff", - "q-e:click": /*#__PURE__*/ inlinedQrlDEV(()=>console.log('warn'), "App_component_Cmp_p_q_e_click_Yl4ybrJWrt4", { + "q-e:click": /*#__PURE__*/ inlinedQrlDEV(App_component_Cmp_p_q_e_click_Yl4ybrJWrt4, "App_component_Cmp_p_q_e_click_Yl4ybrJWrt4", { file: "/user/qwik/src/test.tsx", lo: 144, hi: 169, @@ -39,7 +40,8 @@ export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrlDEV(()=>{ lineNumber: 6, columnNumber: 3 }); -}, "App_component_ckEPmXZlub0", { +}; +export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrlDEV(App_component_ckEPmXZlub0, "App_component_ckEPmXZlub0", { file: "/user/qwik/src/test.tsx", lo: 88, hi: 200, @@ -47,7 +49,7 @@ export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrlDEV(()=>{ })); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,yCAAW;IAC7B,qBACC,WAAC,+BACA,WAAC;QAAE,OAAM;QAAQ,WAAQ,8BAAE,IAAM,QAAQ,GAAG,CAAC;;;;;;OAAS;;;;;;;;;AAGzD;;;;;IAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;kDAM8B,IAAM,QAAQ,GAAG,CAAC;kCAHlB;IAC7B,qBACC,WAAC,+BACA,WAAC;QAAE,OAAM;QAAQ,WAAQ;;;;;;OAA6B;;;;;;;;;AAGzD;AANA,OAAO,MAAM,oBAAM;;;;;IAMhB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_drop_side_effects.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_drop_side_effects.snap index 1c6261dca3d..377f8291168 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_drop_side_effects.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_drop_side_effects.snap @@ -41,30 +41,31 @@ import { serverQrl } from "@qwik.dev/router"; import { _noopQrlDEV } from "@qwik.dev/core"; import { componentQrl } from "@qwik.dev/core"; import { qrlDEV } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); import { sideEffect } from './secret'; -(function() { - console.log('run'); -})(); -(()=>{ - console.log('run'); -})(); -sideEffect(); -export const api = serverQrl(/*#__PURE__*/ _noopQrlDEV("api_server_JonPp043gH0", { +const _qrl_qrl_4294901760 = /*#__PURE__*/ _noopQrlDEV("api_server_JonPp043gH0", { file: "/user/qwik/src/test.tsx", lo: 0, hi: 0, displayName: "test.tsx_api_server" -})); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrlDEV(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg", { +}); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrlDEV(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg", { file: "/user/qwik/src/test.tsx", lo: 503, hi: 575, displayName: "test.tsx_test_component" -})); +}); +(function() { + console.log('run'); +})(); +(()=>{ + console.log('run'); +})(); +sideEffect(); +export const api = serverQrl(_qrl_qrl_4294901760); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAMA,SAAS,UAAU,QAAQ,WAAW;AAKtC,CAAC;IACA,QAAQ,GAAG,CAAC;AACZ,CAAC;AACD,CAAC;IACD,QAAQ,GAAG,CAAC;AACZ,CAAC;AAEF;AAEA,OAAO,MAAM,MAAM;;;;;IAEhB;AAEH,6BAAe;;;;;IAIX\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAMA,SAAS,UAAU,QAAQ,WAAW;;;;;;;;;;;;;AAKtC,CAAC;IACA,QAAQ,GAAG,CAAC;AACZ,CAAC;AACD,CAAC;IACD,QAAQ,GAAG,CAAC;AACZ,CAAC;AAEF;AAEA,OAAO,MAAM,MAAM,+BAEhB;AAEH,6BAAe,8CAIX\"}") ============================= test.tsx_test_component_button_q_e_click_qwSL5gM03T4.js (ENTRY POINT)== import { api } from "./test"; @@ -96,15 +97,15 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _jsxSorted } from "@qwik.dev/core"; import { qrlDEV } from "@qwik.dev/core"; -const i_qwSL5gM03T4 = ()=>import("./test.tsx_test_component_button_q_e_click_qwSL5gM03T4"); +const _qrl_test_component_button_q_e_click_qwSL5gM03T4 = /*#__PURE__*/ qrlDEV(()=>import("./test.tsx_test_component_button_q_e_click_qwSL5gM03T4"), "test_component_button_q_e_click_qwSL5gM03T4", { + file: "/user/qwik/src/test.tsx", + lo: 541, + hi: 558, + displayName: "test.tsx_test_component_button_q_e_click" +}); export const test_component_LUXeXe0DQrg = ()=>{ return /*#__PURE__*/ _jsxSorted("button", null, { - "q-e:click": /*#__PURE__*/ qrlDEV(i_qwSL5gM03T4, "test_component_button_q_e_click_qwSL5gM03T4", { - file: "/user/qwik/src/test.tsx", - lo: 541, - hi: 558, - displayName: "test.tsx_test_component_button_q_e_click" - }) + "q-e:click": _qrl_test_component_button_q_e_click_qwSL5gM03T4 }, null, 3, "u6_0", { fileName: "test.tsx", lineNumber: 27, @@ -113,7 +114,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;0CAwB0B;IACzB,qBACC,WAAC;QAAO,WAAQ;;;;;;;;;;;AAEjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;0CAwB0B;IACzB,qBACC,WAAC;QAAO,WAAQ;;;;;;AAEjB\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_explicit_ext_no_transpile.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_explicit_ext_no_transpile.snap index a9ee66d2e9f..1406762920b 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_explicit_ext_no_transpile.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_explicit_ext_no_transpile.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 1413 +assertion_line: 1414 expression: output -snapshot_kind: text --- ==INPUT== @@ -20,11 +19,11 @@ export const App = component$((props) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0.tsx"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0.tsx"), "App_component_ckEPmXZlub0"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,4EAKhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CAKhB\"}") ============================= test.tsx_App_component_useStyles_t35nSa5UV7U.tsx == export const App_component_useStyles_t35nSa5UV7U = 'hola'; @@ -55,11 +54,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { qrl } from "@qwik.dev/core"; import { useStylesQrl } from "@qwik.dev/core"; -const i_t35nSa5UV7U = ()=>import("./test.tsx_App_component_useStyles_t35nSa5UV7U.tsx"); -const i_w0t0o3QMovU = ()=>import("./test.tsx_App_component_1_w0t0o3QMovU.tsx"); +const _qrl_App_component_1_w0t0o3QMovU = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_1_w0t0o3QMovU.tsx"), "App_component_1_w0t0o3QMovU"); +const _qrl_App_component_useStyles_t35nSa5UV7U = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_useStyles_t35nSa5UV7U.tsx"), "App_component_useStyles_t35nSa5UV7U"); export const App_component_ckEPmXZlub0 = (props)=>{ - useStylesQrl(/*#__PURE__*/ qrl(i_t35nSa5UV7U, "App_component_useStyles_t35nSa5UV7U")); - return /*#__PURE__*/ qrl(i_w0t0o3QMovU, "App_component_1_w0t0o3QMovU"); + useStylesQrl(_qrl_App_component_useStyles_t35nSa5UV7U); + return _qrl_App_component_1_w0t0o3QMovU; }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_explicit_ext_transpile.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_explicit_ext_transpile.snap index 0838f3a8560..9c1eb8fede2 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_explicit_ext_transpile.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_explicit_ext_transpile.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 1392 +assertion_line: 1393 expression: output -snapshot_kind: text --- ==INPUT== @@ -20,11 +19,11 @@ export const App = component$((props) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0.js"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0.js"), "App_component_ckEPmXZlub0"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,4EAKhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CAKhB\"}") ============================= test.tsx_App_component_useStyles_t35nSa5UV7U.js (ENTRY POINT)== export const App_component_useStyles_t35nSa5UV7U = 'hola'; @@ -55,11 +54,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { qrl } from "@qwik.dev/core"; import { useStylesQrl } from "@qwik.dev/core"; -const i_t35nSa5UV7U = ()=>import("./test.tsx_App_component_useStyles_t35nSa5UV7U.js"); -const i_w0t0o3QMovU = ()=>import("./test.tsx_App_component_1_w0t0o3QMovU.js"); +const _qrl_App_component_1_w0t0o3QMovU = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_1_w0t0o3QMovU.js"), "App_component_1_w0t0o3QMovU"); +const _qrl_App_component_useStyles_t35nSa5UV7U = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_useStyles_t35nSa5UV7U.js"), "App_component_useStyles_t35nSa5UV7U"); export const App_component_ckEPmXZlub0 = (props)=>{ - useStylesQrl(/*#__PURE__*/ qrl(i_t35nSa5UV7U, "App_component_useStyles_t35nSa5UV7U")); - return /*#__PURE__*/ qrl(i_w0t0o3QMovU, "App_component_1_w0t0o3QMovU"); + useStylesQrl(_qrl_App_component_useStyles_t35nSa5UV7U); + return _qrl_App_component_1_w0t0o3QMovU; }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_export_issue.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_export_issue.snap index 93ded405d39..d9d53c15f31 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_export_issue.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_export_issue.snap @@ -30,17 +30,17 @@ export default App; import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); -const i_royhjYaCbYE = ()=>import("./test.tsx_Root_component_royhjYaCbYE"); -const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); -export const Root = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_royhjYaCbYE, "Root_component_royhjYaCbYE")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +const _qrl_Root_component_royhjYaCbYE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Root_component_royhjYaCbYE"), "Root_component_royhjYaCbYE"); +const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); +export const Root = /*#__PURE__*/ componentQrl(_qrl_Root_component_royhjYaCbYE); const Other = 12; export { Other as App }; export default App; export { App as _auto_App }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAGA,MAAM,oBAAM;AAOZ,OAAO,MAAM,qBAAO,6EAIjB;AAEH,MAAM,QAAQ;AACd,SAAS,SAAS,GAAG,GAAG;AAExB,eAAe,IAAI\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAGA,MAAM,oBAAM;AAOZ,OAAO,MAAM,qBAAO,8CAIjB;AAEH,MAAM,QAAQ;AACd,SAAS,SAAS,GAAG,GAAG;AAExB,eAAe,IAAI\"}") ============================= test.tsx_Root_component_royhjYaCbYE.js (ENTRY POINT)== import { _auto_App as App } from "./test"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_exports.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_exports.snap index 72b8f50c680..de284e002f4 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_exports.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_exports.snap @@ -33,9 +33,9 @@ export const Footer = component$(); ============================= project/test.tsx_Header_component_UVBJuFYfvDo.jsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; -const i_uWM1kg0IGO0 = ()=>import("./test.tsx_Header_component_1_uWM1kg0IGO0"); +const _qrl_Header_component_1_uWM1kg0IGO0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_1_uWM1kg0IGO0"), "Header_component_1_uWM1kg0IGO0"); export const Header_component_UVBJuFYfvDo = ()=>{ - return /*#__PURE__*/ qrl(i_uWM1kg0IGO0, "Header_component_1_uWM1kg0IGO0"); + return _qrl_Header_component_1_uWM1kg0IGO0; }; @@ -64,19 +64,20 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\" import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_UVBJuFYfvDo = ()=>import("./test.tsx_Header_component_UVBJuFYfvDo"); +const _qrl_Header_component_UVBJuFYfvDo = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_UVBJuFYfvDo"), "Header_component_UVBJuFYfvDo"); export const [a, { b, v1: [c], d = v2, ...e }, f = v3, ...g] = obj; +const exp1 = 1; const internal = 2; -export { internal as expr2 }; +export { exp1, internal as expr2 }; export function foo() {} export class bar { } export default function DefaultFn() {} -export const Header = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_UVBJuFYfvDo, "Header_component_UVBJuFYfvDo")); +export const Header = /*#__PURE__*/ componentQrl(_qrl_Header_component_UVBJuFYfvDo); export const Footer = /*#__PURE__*/ componentQrl(); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,CAAC,GAAG,EAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAE,EAAE,EAAE,GAAG,GAAE,EAAE,IAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;AAG7D,MAAM,WAAW;AACjB,SAAc,YAAY,KAAK,GAAE;AAEjC,OAAO,SAAS,OAAQ;AACxB,OAAO,MAAM;AAAK;AAElB,eAAe,SAAS,aAAa;AAErC,OAAO,MAAM,uBAAS,+EAOnB;AAEH,OAAO,MAAM,uBAAS,eAAa\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,CAAC,GAAG,EAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAE,EAAE,EAAE,GAAG,GAAE,EAAE,IAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;AAE7D,MAAM,OAAO;AACb,MAAM,WAAW;AACjB,SAAQ,IAAI,EAAE,YAAY,KAAK,GAAE;AAEjC,OAAO,SAAS,OAAQ;AACxB,OAAO,MAAM;AAAK;AAElB,eAAe,SAAS,aAAa;AAErC,OAAO,MAAM,uBAAS,gDAOnB;AAEH,OAAO,MAAM,uBAAS,eAAa\"}") ============================= project/test.tsx_Header_component_1_uWM1kg0IGO0.jsx (ENTRY POINT)== import { default as DefaultFn } from "./test"; @@ -87,17 +88,17 @@ import { bar } from "./test"; import { c } from "./test"; import { d } from "./test"; import { e } from "./test"; +import { exp1 } from "./test"; import { f } from "./test"; import { foo } from "./test"; import { expr2 as internal } from "./test"; -const exp1 = 1; export const Header_component_1_uWM1kg0IGO0 = ()=>
{a}{b}{c}{d}{e}{f}{exp1}{internal}{foo}{bar}{DefaultFn}
{v1}{v2}{v3}{obj}
; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;;MAKM,OAAO;8CAUH,KACP,OAAO;GACP,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,UAAU,KAAK,KAAK,YAAY,IAAI;GAClE,CAAC,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI;EAC7B,EAAE\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;8CAeU,KACP,OAAO;GACP,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,UAAU,KAAK,KAAK,YAAY,IAAI;GAClE,CAAC,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI;EAC7B,EAAE\"}") /* { "origin": "project/test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_fix_dynamic_import.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_fix_dynamic_import.snap index a3e6f1080d2..6c29aab0569 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_fix_dynamic_import.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_fix_dynamic_import.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 1280 +assertion_line: 1281 expression: output -snapshot_kind: text --- ==INPUT== @@ -59,14 +58,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/folder/test.tsx\"],\" import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_RGgm7Ks9QWI = ()=>import("./test.tsx_Header_component_RGgm7Ks9QWI"); +const _qrl_Header_component_RGgm7Ks9QWI = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_RGgm7Ks9QWI"), "Header_component_RGgm7Ks9QWI"); export function foo() { return import("../foo/state2"); } -export const Header = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_RGgm7Ks9QWI, "Header_component_RGgm7Ks9QWI")); +export const Header = /*#__PURE__*/ componentQrl(_qrl_Header_component_RGgm7Ks9QWI); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/folder/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA,OAAO,SAAS;IACf,OAAO,MAAM,CAAC;AACf;AAEA,OAAO,MAAM,uBAAS,+EAOnB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/folder/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA,OAAO,SAAS;IACf,OAAO,MAAM,CAAC;AACf;AAEA,OAAO,MAAM,uBAAS,gDAOnB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component.snap index e1677701825..6b25455266b 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 328 +assertion_line: 329 expression: output -snapshot_kind: text --- ==INPUT== @@ -20,7 +19,6 @@ const Header = component$(() => { ============================= test.tsx_Header_component_J4uyIhaBNR4.tsx (ENTRY POINT)== import { useStore } from "@qwik.dev/core"; -const i_J4uyIhaBNR4 = ()=>import("./test.tsx_Header_component_J4uyIhaBNR4"); export const Header_component_J4uyIhaBNR4 = ()=>{ const thing = useStore(); const { foo, bar } = foo(); @@ -28,7 +26,7 @@ export const Header_component_J4uyIhaBNR4 = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;4CAE0B;IACzB,MAAM,QAAQ;IACd,MAAM,EAAC,GAAG,EAAE,GAAG,EAAC,GAAG;IAEnB,QACE,KAAK,QAAQ;AAEhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";4CAE0B;IACzB,MAAM,QAAQ;IACd,MAAM,EAAC,GAAG,EAAE,GAAG,EAAC,GAAG;IAEnB,QACE,KAAK,QAAQ;AAEhB\"}") /* { "origin": "test.tsx", @@ -53,12 +51,12 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_J4uyIhaBNR4 = ()=>import("./test.tsx_Header_component_J4uyIhaBNR4"); import { $, component$, useStore } from '@qwik.dev/core'; -const Header = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_J4uyIhaBNR4, "Header_component_J4uyIhaBNR4")); +const _qrl_Header_component_J4uyIhaBNR4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_J4uyIhaBNR4"), "Header_component_J4uyIhaBNR4"); +const Header = /*#__PURE__*/ componentQrl(_qrl_Header_component_J4uyIhaBNR4); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AACA,SAAS,CAAC,EAAE,UAAU,EAAE,QAAQ,QAAQ,iBAAiB;AACzD,MAAM,uBAAS\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AACA,SAAS,CAAC,EAAE,UAAU,EAAE,QAAQ,QAAQ,iBAAiB;;AACzD,MAAM,uBAAS\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component_2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component_2.snap index 6ce8e5e5d3b..eb71412ac95 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component_2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component_2.snap @@ -39,24 +39,24 @@ export const App = component$((props) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); import { useStore } from '@qwik.dev/core'; +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); export const useCounter = ()=>{ return useStore({ count: 0 }); }; export const STEP = 1; -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AACA,SAAwB,QAAQ,QAAQ,iBAAiB;AACzD,OAAO,MAAM,aAAa;IACzB,OAAO,SAAS;QAAC,OAAO;IAAC;AAC1B,EAAC;AAED,OAAO,MAAM,OAAO,EAAE;AAEtB,OAAO,MAAM,oBAAM,4EAoBjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AACA,SAAwB,QAAQ,QAAQ,iBAAiB;;AACzD,OAAO,MAAM,aAAa;IACzB,OAAO,SAAS;QAAC,OAAO;IAAC;AAC1B,EAAC;AAED,OAAO,MAAM,OAAO,EAAE;AAEtB,OAAO,MAAM,oBAAM,6CAoBjB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== +import { useCounter } from "./test"; import { _jsxSorted } from "@qwik.dev/core"; import { _wrapProp } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -import { useCounter } from "./test"; import { useStore } from "@qwik.dev/core"; const i_UB6Fs5a3bd8 = ()=>import("./test.tsx_App_component_div_button_q_e_click_UB6Fs5a3bd8"); const i_mi4E1piTWe8 = ()=>import("./test.tsx_App_component_div_q_e_click_mi4E1piTWe8"); diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component_capture_props.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component_capture_props.snap index 7036a7eee1d..c07f5854ebe 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component_capture_props.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component_capture_props.snap @@ -26,11 +26,11 @@ export const App = component$(({count, rest: [I2, {I3, v1: [I4], I5=v2, ...I6}, import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,4EAYjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CAYjB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_getter_generation.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_getter_generation.snap index 01c7ffd0d87..3cdd506a02d 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_getter_generation.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_getter_generation.snap @@ -43,13 +43,13 @@ export const Cmp = component$((props) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_4ryKJTOKjWE = ()=>import("./test.tsx_Cmp_component_4ryKJTOKjWE"); -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); -export const Cmp = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_4ryKJTOKjWE, "Cmp_component_4ryKJTOKjWE")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +const _qrl_Cmp_component_4ryKJTOKjWE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Cmp_component_4ryKJTOKjWE"), "Cmp_component_4ryKJTOKjWE"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); +export const Cmp = /*#__PURE__*/ componentQrl(_qrl_Cmp_component_4ryKJTOKjWE); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAGA,OAAO,MAAM,oBAAM,4EAoBhB;AAEH,OAAO,MAAM,oBAAM,4EAOhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAGA,OAAO,MAAM,oBAAM,6CAoBhB;AAEH,OAAO,MAAM,oBAAM,6CAOhB\"}") ============================= test.tsx_Cmp_component_4ryKJTOKjWE.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_analysis.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_analysis.snap index 1869afdc721..8cfe670d1f4 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_analysis.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_analysis.snap @@ -86,11 +86,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAKA,OAAO,MAAM,oBAAM,4EA4ChB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAKA,OAAO,MAAM,oBAAM,6CA4ChB\"}") ============================= test.tsx_App_component_Fragment_Div_immutable4_2zF7jA3Yti0.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; @@ -169,10 +169,10 @@ const _hf0 = (p0)=>({ baz: p0.count ? true : false }); const _hf0_str = '{foo:"bar",baz:p0.count?true:false}'; +const _qrl_App_component_Fragment_Div_onEvent_zrFduYbT3xM = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_Fragment_Div_onEvent_zrFduYbT3xM"), "App_component_Fragment_Div_onEvent_zrFduYbT3xM"); +const _qrl_App_component_Fragment_Div_transparent_eeDEK6EM1oo = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_Fragment_Div_transparent_eeDEK6EM1oo"), "App_component_Fragment_Div_transparent_eeDEK6EM1oo"); const i_2zF7jA3Yti0 = ()=>import("./test.tsx_App_component_Fragment_Div_immutable4_2zF7jA3Yti0"); -const i_eeDEK6EM1oo = ()=>import("./test.tsx_App_component_Fragment_Div_transparent_eeDEK6EM1oo"); const i_pU6yOC5P6sY = ()=>import("./test.tsx_App_component_remove_pU6yOC5P6sY"); -const i_zrFduYbT3xM = ()=>import("./test.tsx_App_component_Fragment_Div_onEvent_zrFduYbT3xM"); export const App_component_ckEPmXZlub0 = (props)=>{ const state = useStore({ count: 0 @@ -191,8 +191,8 @@ export const App_component_ckEPmXZlub0 = (props)=>{ onClick$: props.onClick$ }, { class: styles.foo, - onEvent$: /*#__PURE__*/ qrl(i_zrFduYbT3xM, "App_component_Fragment_Div_onEvent_zrFduYbT3xM"), - transparent$: /*#__PURE__*/ qrl(i_eeDEK6EM1oo, "App_component_Fragment_Div_transparent_eeDEK6EM1oo"), + onEvent$: _qrl_App_component_Fragment_Div_onEvent_zrFduYbT3xM, + transparent$: _qrl_App_component_Fragment_Div_transparent_eeDEK6EM1oo, immutable1: "stuff", immutable2: { foo: 'bar', diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_function_components.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_function_components.snap index de05016931b..2e91cb05819 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_function_components.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_function_components.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2603 +assertion_line: 2604 expression: output -snapshot_kind: text --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_import_assertion.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_import_assertion.snap index 2619f962f03..f33ea96563b 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_import_assertion.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_import_assertion.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2043 +assertion_line: 2044 expression: output -snapshot_kind: text --- ==INPUT== @@ -18,11 +17,11 @@ export const Greeter = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_n7HuG2hhU0Q = ()=>import("./test.tsx_Greeter_component_n7HuG2hhU0Q"); -export const Greeter = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_n7HuG2hhU0Q, "Greeter_component_n7HuG2hhU0Q")); +const _qrl_Greeter_component_n7HuG2hhU0Q = /*#__PURE__*/ qrl(()=>import("./test.tsx_Greeter_component_n7HuG2hhU0Q"), "Greeter_component_n7HuG2hhU0Q"); +export const Greeter = /*#__PURE__*/ componentQrl(_qrl_Greeter_component_n7HuG2hhU0Q); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA,OAAO,MAAM,wBAAU,gFAEpB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA,OAAO,MAAM,wBAAU,iDAEpB\"}") ============================= test.tsx_Greeter_component_n7HuG2hhU0Q.js (ENTRY POINT)== import json from "./foo.json" with { diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_inlined_entry_strategy.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_inlined_entry_strategy.snap index 9559a0b6f55..3f237f32189 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_inlined_entry_strategy.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_inlined_entry_strategy.snap @@ -39,24 +39,28 @@ import { _captures } from "@qwik.dev/core"; import { useStore } from '@qwik.dev/core'; import { thing } from './sibling'; import mongodb from 'mongodb'; -export const Child = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(()=>{ - useStylesQrl(/*#__PURE__*/ inlinedQrl('somestring', "Child_component_useStyles_qBZTuFM0160")); +const Child_component_div_q_e_click_cROa4sult1s = ()=>console.log(mongodb); +const Child_component_useBrowserVisibleTask_0IGFPOyJmQA = ()=>{ + const state = _captures[0]; + state.count = thing.doStuff() + import("./sibling"); +}; +const Child_component_useStyles_qBZTuFM0160 = 'somestring'; +const Child_component_9GyF01GDKqw = ()=>{ + useStylesQrl(/*#__PURE__*/ inlinedQrl(Child_component_useStyles_qBZTuFM0160, "Child_component_useStyles_qBZTuFM0160")); const state = useStore({ count: 0 }); // Double count watch - useBrowserVisibleTaskQrl(/*#__PURE__*/ inlinedQrl(()=>{ - const state = _captures[0]; - state.count = thing.doStuff() + import("./sibling"); - }, "Child_component_useBrowserVisibleTask_0IGFPOyJmQA", [ + useBrowserVisibleTaskQrl(/*#__PURE__*/ inlinedQrl(Child_component_useBrowserVisibleTask_0IGFPOyJmQA, "Child_component_useBrowserVisibleTask_0IGFPOyJmQA", [ state ])); - return
console.log(mongodb), "Child_component_div_q_e_click_cROa4sult1s")}> + return
; -}, "Child_component_9GyF01GDKqw")); +}; +export const Child = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(Child_component_9GyF01GDKqw, "Child_component_9GyF01GDKqw")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AACA,SAA6C,QAAQ,QAAoB,iBAAiB;AAC1F,SAAS,KAAK,QAAQ,YAAY;AAClC,OAAO,aAAa,UAAU;AAE9B,OAAO,MAAM,sBAAQ,sCAAW;IAE/B,sCAAW;IACX,MAAM,QAAQ,SAAS;QACtB,OAAO;IACR;IAEA,qBAAqB;IACrB,kDAAuB;;QACtB,MAAM,KAAK,GAAG,MAAM,OAAO,KAAK,MAAM,CAAC;;;;IAGxC,QACE,IAAI,oCAAU,IAAM,QAAQ,GAAG,CAAC,wDAAU;EAC3C,EAAE;AAEJ,mCAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AACA,SAA6C,QAAQ,QAAoB,iBAAiB;AAC1F,SAAS,KAAK,QAAQ,YAAY;AAClC,OAAO,aAAa,UAAU;kDAeb,IAAM,QAAQ,GAAG,CAAC;0DALX;;IACtB,MAAM,KAAK,GAAG,MAAM,OAAO,KAAK,MAAM,CAAC;;8CAP7B;oCAFoB;IAE/B;IACA,MAAM,QAAQ,SAAS;QACtB,OAAO;IACR;IAEA,qBAAqB;IACrB;;;IAIA,QACE,IAAI,6HAAsC;EAC3C,EAAE;AAEJ;AAhBA,OAAO,MAAM,sBAAQ,mGAgBlB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_input_bind.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_input_bind.snap index ef7688563f9..d2a1c02d67d 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_input_bind.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_input_bind.snap @@ -33,7 +33,7 @@ import { _jsxSorted } from "@qwik.dev/core"; import { _chk } from "@qwik.dev/core"; import { _wrapProp } from "@qwik.dev/core"; import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; -export const Greeter = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(()=>{ +const s_n7HuG2hhU0Q = ()=>{ const value = useSignal(0); const checked = useSignal(false); const stuff = useSignal(); @@ -56,10 +56,11 @@ export const Greeter = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(()=>{ /*#__PURE__*/ _jsxSorted("div", null, null, value, 3, null), /*#__PURE__*/ _jsxSorted("div", null, null, _wrapProp(value), 3, null) ], 3, "u6_0"); -}, "s_n7HuG2hhU0Q")); +}; +export const Greeter = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(s_n7HuG2hhU0Q, "s_n7HuG2hhU0Q")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;AAGA,OAAO,MAAM,wBAAU,sCAAW;IACjC,MAAM,QAAQ,UAAU;IACxB,MAAM,UAAU,UAAU;IAC1B,MAAM,QAAQ;IACd,qBACC;sBACC,WAAC;qBAAkB;;gBAAA;;;sBACnB,WAAC;uBAAoB;;gBAAA;;;sBACrB,WAAC;YAAD,cAAmB;;sBACnB,WAAC,mBAAK;sBACN,WAAC,6BAAK;;AAIT,qBAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;sBAGkC;IACjC,MAAM,QAAQ,UAAU;IACxB,MAAM,UAAU,UAAU;IAC1B,MAAM,QAAQ;IACd,qBACC;sBACC,WAAC;qBAAkB;;gBAAA;;;sBACnB,WAAC;uBAAoB;;gBAAA;;;sBACrB,WAAC;YAAD,cAAmB;;sBACnB,WAAC,mBAAK;sBACN,WAAC,6BAAK;;AAIT;AAdA,OAAO,MAAM,wBAAU,uEAcpB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_references.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_references.snap index bcf5f7f35bb..ac2db1cb235 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_references.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_references.snap @@ -27,26 +27,26 @@ export const App = component$(({count}) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAQA,OAAO,MAAM,oBAAM,4EAQjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAQA,OAAO,MAAM,oBAAM,6CAQjB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; +const _qrl_App_component_1_w0t0o3QMovU = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_1_w0t0o3QMovU"), "App_component_1_w0t0o3QMovU"); +const I1 = 12; const [I2, { I3, v1: [I4], I5 = v2, ...I6 }, I7 = v3, ...I8] = obj; function I9() {} -const I1 = 12; -const i_w0t0o3QMovU = ()=>import("./test.tsx_App_component_1_w0t0o3QMovU"); export const App_component_ckEPmXZlub0 = (_rawProps)=>{ console.log(I1, I2, I3, I4, I5, I6, I7, I8, I9); console.log(itsok, v1, v2, v3, obj); - return /*#__PURE__*/ qrl(i_w0t0o3QMovU, "App_component_1_w0t0o3QMovU"); + return _qrl_App_component_1_w0t0o3QMovU; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";MAIM,CAAC,IAAI,EAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,KAAG,EAAE,EAAE,GAAG,IAAG,EAAE,KAAG,EAAE,EAAE,GAAG,GAAG,GAAG;AACzD,SAAS,MAAM;MAFT,KAAK;;yCAKmB;IAC7B,QAAQ,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;IAC5C,QAAQ,GAAG,CAAC,OAAO,IAAI,IAAI,IAAI;IAC/B;AAKD\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;MAGM,KAAK;MACL,CAAC,IAAI,EAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,KAAG,EAAE,EAAE,GAAG,IAAG,EAAE,KAAG,EAAE,EAAE,GAAG,GAAG,GAAG;AACzD,SAAS,MAAM;yCAGe;IAC7B,QAAQ,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;IAC5C,QAAQ,GAAG,CAAC,OAAO,IAAI,IAAI,IAAI;IAC/B;AAKD\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_segment_expr1.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_segment_expr1.snap index a981fbeda59..e9398c81ab1 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_segment_expr1.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_segment_expr1.snap @@ -25,17 +25,19 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAKA,OAAO,MAAM,oBAAM,4EASjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAKA,OAAO,MAAM,oBAAM,6CASjB\"}") ============================= test.tsx_App_component_useStyles_t35nSa5UV7U.js (ENTRY POINT)== -export const App_component_useStyles_t35nSa5UV7U = style; +import css1 from "./global.css"; +import css2 from "./style.css"; +export const App_component_useStyles_t35nSa5UV7U = `${css1}${css2}`; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"mDAOY\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;mDAMe,GAAG,OAAO,MAAM\"}") /* { "origin": "test.tsx", @@ -51,8 +53,8 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma "ctxName": "useStyles$", "captures": false, "loc": [ - 211, - 216 + 181, + 197 ] } */ @@ -62,11 +64,11 @@ import css1 from "./global.css"; import css2 from "./style.css"; import { qrl } from "@qwik.dev/core"; import { useStylesQrl } from "@qwik.dev/core"; -const i_t35nSa5UV7U = ()=>import("./test.tsx_App_component_useStyles_t35nSa5UV7U"); -const i_w0t0o3QMovU = ()=>import("./test.tsx_App_component_1_w0t0o3QMovU"); +const _qrl_App_component_1_w0t0o3QMovU = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_1_w0t0o3QMovU"), "App_component_1_w0t0o3QMovU"); +const _qrl_App_component_useStyles_t35nSa5UV7U = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_useStyles_t35nSa5UV7U"), "App_component_useStyles_t35nSa5UV7U"); export const App_component_ckEPmXZlub0 = ()=>{ - useStylesQrl(/*#__PURE__*/ qrl(i_t35nSa5UV7U, "App_component_useStyles_t35nSa5UV7U")); - return /*#__PURE__*/ qrl(i_w0t0o3QMovU, "App_component_1_w0t0o3QMovU"); + useStylesQrl(_qrl_App_component_useStyles_t35nSa5UV7U); + return _qrl_App_component_1_w0t0o3QMovU; }; @@ -93,10 +95,13 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma */ ============================= test.tsx_App_component_1_w0t0o3QMovU.js (ENTRY POINT)== -export const App_component_1_w0t0o3QMovU = render; +import { _jsxSorted } from "@qwik.dev/core"; +export const App_component_1_w0t0o3QMovU = ()=>{ + return /*#__PURE__*/ _jsxSorted("div", null, null, null, 3, "u6_0"); +}; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"2CAaU\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";2CAQgB;IACd,qBACC,WAAC;AAEH\"}") /* { "origin": "test.tsx", @@ -112,48 +117,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma "ctxName": "$", "captures": false, "loc": [ - 287, - 293 + 235, + 275 ] } */ == DIAGNOSTICS == -[ - { - "category": "error", - "code": "C03", - "file": "test.tsx", - "message": "Qrl($) scope is not a function, but it's capturing local identifiers: style", - "highlights": [ - { - "lo": 211, - "hi": 216, - "startLine": 8, - "startCol": 16, - "endLine": 8, - "endCol": 20 - } - ], - "suggestions": null, - "scope": "optimizer" - }, - { - "category": "error", - "code": "C03", - "file": "test.tsx", - "message": "Qrl($) scope is not a function, but it's capturing local identifiers: render", - "highlights": [ - { - "lo": 287, - "hi": 293, - "startLine": 14, - "startCol": 14, - "endLine": 14, - "endCol": 19 - } - ], - "suggestions": null, - "scope": "optimizer" - } -] +[] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_33443.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_33443.snap index 0f11445f67e..1b79ad2e31a 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_33443.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_33443.snap @@ -29,9 +29,9 @@ import { _fnSignal } from "@qwik.dev/core"; import { _captures } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; +import { useSignal } from '@qwik.dev/core'; const _hf0 = (p0, p1)=>(p0.description ?? '') && 'description' in p0.other ? `Hello ${p1.value}` : `Bye ${p1.value}`; const _hf0_str = '(p0.description??"")&&"description"in p0.other?`Hello ${p1.value}`:`Bye ${p1.value}`'; -import { useSignal } from '@qwik.dev/core'; const Issue3742_component_div_button_q_e_click_95Hlm8WgsYY = ()=>{ const counter = _captures[0]; return counter.value++; @@ -55,7 +55,7 @@ const Issue3742_component_svSy0PlWTAw = (_rawProps)=>{ export const Issue3742 = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(Issue3742_component_svSy0PlWTAw, "Issue3742_component_svSy0PlWTAw")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;uBAOS,AAAC,IAJ4B,eAAc,OAI3B,oBAJ+B,QAIL,CAAC,MAAM,EAAE,GAAQ,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,GAAQ,KAAK,EAAE;;AANpG,SAAqB,SAAS,QAAQ,iBAAiB;6DASnC;;WAAM,QAAQ,KAAK;;wCAPH;IACnC,MAAM,UAAU,UAAU;IAC1B,qBACC,WAAC;QACD,KAAK;;;;;QACJ;sBAED,WAAC;YAAO,WAAQ;;;WAAyB;;AAK1C;AAZD,OAAO,MAAM,0BAAY,2GAYrB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AACA,SAAqB,SAAS,QAAQ,iBAAiB;uBAM9C,AAAC,IAJ4B,eAAc,OAI3B,oBAJ+B,QAIL,CAAC,MAAM,EAAE,GAAQ,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,GAAQ,KAAK,EAAE;;6DAGhF;;WAAM,QAAQ,KAAK;;wCAPH;IACnC,MAAM,UAAU,UAAU;IAC1B,qBACC,WAAC;QACD,KAAK;;;;;QACJ;sBAED,WAAC;YAAO,WAAQ;;;WAAyB;;AAK1C;AAZD,OAAO,MAAM,0BAAY,2GAYrB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_4438.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_4438.snap index a0a18784f50..47afc45451b 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_4438.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_4438.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2838 +assertion_line: 2839 expression: output -snapshot_kind: text --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx.snap index 851a004c242..dfacea39cd8 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx.snap @@ -54,8 +54,8 @@ import { _getConstProps } from "@qwik.dev/core"; import { _jsxSplit } from "@qwik.dev/core"; import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_HTDRsvUbLiE = ()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"); import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; +const _qrl_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE"); export const Lightweight = (props)=>{ return /*#__PURE__*/ _jsxSorted("div", null, null, /*#__PURE__*/ _jsxSorted(_Fragment, null, null, [ /*#__PURE__*/ _jsxSorted("div", null, null, null, 3, null), @@ -64,12 +64,12 @@ export const Lightweight = (props)=>{ }, _getConstProps(props), null, 0, null) ], 1, "u6_0"), 1, "u6_1"); }; -export const Foo = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_HTDRsvUbLiE, "Foo_component_HTDRsvUbLiE"), { +export const Foo = /*#__PURE__*/ componentQrl(_qrl_Foo_component_HTDRsvUbLiE, { tagName: "my-foo" }); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;AAGA,OAAO,MAAM,cAAc,CAAC;IAC3B,qBACC,WAAC,iCACA;sBACC,WAAC;sBACD,UAAC;4BAAW;0BAAA;;AAIhB,EAAE;AAEF,OAAO,MAAM,oBAAM,4EAuBhB;IACF,SAAS;AACV,GAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;AAGA,OAAO,MAAM,cAAc,CAAC;IAC3B,qBACC,WAAC,iCACA;sBACC,WAAC;sBACD,UAAC;4BAAW;0BAAA;;AAIhB,EAAE;AAEF,OAAO,MAAM,oBAAM,6CAuBhB;IACF,SAAS;AACV,GAAG\"}") ============================= test.tsx_Foo_component_HTDRsvUbLiE.js (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_import_source.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_import_source.snap index 178e3451374..a509ce0df70 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_import_source.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_import_source.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 1433 +assertion_line: 1434 expression: output -snapshot_kind: text --- ==INPUT== @@ -23,15 +22,15 @@ export const App2 = qwikify$(() => ( /* @jsxImportSource react */ import { qwikifyQrl } from "./qwikfy"; import { qrl } from "@qwik.dev/core"; -const i_RKJW7oCMdS4 = ()=>import("./test.tsx_App2_qwikify_RKJW7oCMdS4.js"); import { jsx as _jsx } from "react/jsx-runtime"; +const _qrl_App2_qwikify_RKJW7oCMdS4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App2_qwikify_RKJW7oCMdS4.js"), "App2_qwikify_RKJW7oCMdS4"); export const App = ()=>/*#__PURE__*/ _jsx("div", { onClick$: ()=>console.log('App') }); -export const App2 = qwikifyQrl(/*#__PURE__*/ qrl(i_RKJW7oCMdS4, "App2_qwikify_RKJW7oCMdS4")); +export const App2 = qwikifyQrl(_qrl_App2_qwikify_RKJW7oCMdS4); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"AACA,0BAA0B;;;;AAI1B,OAAO,MAAM,MAAM,kBAClB,KAAC;QAAI,UAAU,IAAI,QAAQ,GAAG,CAAC;OAC9B;AAEF,OAAO,MAAM,OAAO,yEAEjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"AACA,0BAA0B;;;;AAI1B,OAAO,MAAM,MAAM,kBAClB,KAAC;QAAI,UAAU,IAAI,QAAQ,GAAG,CAAC;OAC9B;AAEF,OAAO,MAAM,OAAO,0CAEjB\"}") ============================= test.tsx_App2_qwikify_RKJW7oCMdS4.js (ENTRY POINT)== import { jsx as _jsx } from "react/jsx-runtime"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed.snap index add67a41ba6..573629e4b7d 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2440 +assertion_line: 2441 expression: output -snapshot_kind: text --- ==INPUT== @@ -25,11 +24,11 @@ export const App = component$((props: Stuff) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0.js"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0.js"), "App_component_ckEPmXZlub0"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,4EAUhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CAUhB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed_dev.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed_dev.snap index e6b8e5d4612..0f411709f19 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed_dev.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed_dev.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2466 +assertion_line: 2467 expression: output -snapshot_kind: text --- ==INPUT== @@ -25,16 +24,16 @@ export const App = component$((props: Stuff) => { import { componentQrl } from "@qwik.dev/core"; import { qrlDEV } from "@qwik.dev/core"; -const i_KGLYFBhvJc0 = ()=>import("./index.tsx_App_component_KGLYFBhvJc0.js"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrlDEV(i_KGLYFBhvJc0, "App_component_KGLYFBhvJc0", { +const _qrl_App_component_KGLYFBhvJc0 = /*#__PURE__*/ qrlDEV(()=>import("./index.tsx_App_component_KGLYFBhvJc0.js"), "App_component_KGLYFBhvJc0", { file: "/src/project/project/index.tsx", lo: 88, hi: 283, displayName: "index.tsx_App_component" -})); +}); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_KGLYFBhvJc0); -Some("{\"version\":3,\"sources\":[\"/src/project/project/index.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM;;;;;IAUhB\"}") +Some("{\"version\":3,\"sources\":[\"/src/project/project/index.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;AAGA,OAAO,MAAM,oBAAM,6CAUhB\"}") ============================= project/index.tsx_App_component_KGLYFBhvJc0.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_listeners.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_listeners.snap index 6a7753d08fc..eec1df86905 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_listeners.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_listeners.snap @@ -68,19 +68,19 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_HTDRsvUbLiE = ()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"); -export const Foo = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_HTDRsvUbLiE, "Foo_component_HTDRsvUbLiE"), { +const _qrl_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE"); +export const Foo = /*#__PURE__*/ componentQrl(_qrl_Foo_component_HTDRsvUbLiE, { tagName: "my-foo" }); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,4EA0BhB;IACF,SAAS;AACV,GAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CA0BhB;IACF,SAAS;AACV,GAAG\"}") ============================= test.tsx_Foo_component_HTDRsvUbLiE.js (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; -const i_DvU6FitWglY = ()=>import("./test.tsx_Foo_component_1_DvU6FitWglY"); +const _qrl_Foo_component_1_DvU6FitWglY = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_1_DvU6FitWglY"), "Foo_component_1_DvU6FitWglY"); export const Foo_component_HTDRsvUbLiE = ()=>{ - return /*#__PURE__*/ qrl(i_DvU6FitWglY, "Foo_component_1_DvU6FitWglY"); + return _qrl_Foo_component_1_DvU6FitWglY; }; @@ -135,33 +135,33 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_0FSbGzUROso = ()=>import("./test.tsx_Foo_component_div_q_e_documentscroll_0FSbGzUROso"); -const i_6qyBttefepU = ()=>import("./test.tsx_Foo_component_div_q_e_document_scroll_6qyBttefepU"); -const i_Em1LspK7JVg = ()=>import("./test.tsx_Foo_component_div_host_onDocumentScroll_1_Em1LspK7JVg"); -const i_H10xZtD0e7w = ()=>import("./test.tsx_Foo_component_handler_H10xZtD0e7w"); -const i_YEa2A5ADUOg = ()=>import("./test.tsx_Foo_component_div_q_e_click_YEa2A5ADUOg"); -const i_Zip7mifsjRY = ()=>import("./test.tsx_Foo_component_div_host_onDocumentScroll_Zip7mifsjRY"); -const i_cPEH970JbEY = ()=>import("./test.tsx_Foo_component_div_host_onClick_cPEH970JbEY"); -const i_d0Zn04qNgs0 = ()=>import("./test.tsx_Foo_component_div_q_e_documentscroll_1_d0Zn04qNgs0"); -const i_kX5SiYdz650 = ()=>import("./test.tsx_Foo_component_div_q_e_c_lick_kX5SiYdz650"); -const i_pyHnxab17ms = ()=>import("./test.tsx_Foo_component_div_custom_pyHnxab17ms"); -const i_wphyTkeintI = ()=>import("./test.tsx_Foo_component_div_q_e_document_scroll_1_wphyTkeintI"); +const _qrl_Foo_component_handler_H10xZtD0e7w = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_handler_H10xZtD0e7w"), "Foo_component_handler_H10xZtD0e7w"); +const _qrl_Foo_component_div_custom_pyHnxab17ms = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_custom_pyHnxab17ms"), "Foo_component_div_custom_pyHnxab17ms"); +const _qrl_Foo_component_div_host_onClick_cPEH970JbEY = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_host_onClick_cPEH970JbEY"), "Foo_component_div_host_onClick_cPEH970JbEY"); +const _qrl_Foo_component_div_host_onDocumentScroll_1_Em1LspK7JVg = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_host_onDocumentScroll_1_Em1LspK7JVg"), "Foo_component_div_host_onDocumentScroll_1_Em1LspK7JVg"); +const _qrl_Foo_component_div_host_onDocumentScroll_Zip7mifsjRY = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_host_onDocumentScroll_Zip7mifsjRY"), "Foo_component_div_host_onDocumentScroll_Zip7mifsjRY"); +const _qrl_Foo_component_div_q_e_c_lick_kX5SiYdz650 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_q_e_c_lick_kX5SiYdz650"), "Foo_component_div_q_e_c_lick_kX5SiYdz650"); +const _qrl_Foo_component_div_q_e_click_YEa2A5ADUOg = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_q_e_click_YEa2A5ADUOg"), "Foo_component_div_q_e_click_YEa2A5ADUOg"); +const _qrl_Foo_component_div_q_e_document_scroll_1_wphyTkeintI = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_q_e_document_scroll_1_wphyTkeintI"), "Foo_component_div_q_e_document_scroll_1_wphyTkeintI"); +const _qrl_Foo_component_div_q_e_document_scroll_6qyBttefepU = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_q_e_document_scroll_6qyBttefepU"), "Foo_component_div_q_e_document_scroll_6qyBttefepU"); +const _qrl_Foo_component_div_q_e_documentscroll_0FSbGzUROso = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_q_e_documentscroll_0FSbGzUROso"), "Foo_component_div_q_e_documentscroll_0FSbGzUROso"); +const _qrl_Foo_component_div_q_e_documentscroll_1_d0Zn04qNgs0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_q_e_documentscroll_1_d0Zn04qNgs0"), "Foo_component_div_q_e_documentscroll_1_d0Zn04qNgs0"); export const Foo_component_1_DvU6FitWglY = ()=>{ - const handler = /*#__PURE__*/ qrl(i_H10xZtD0e7w, "Foo_component_handler_H10xZtD0e7w"); + const handler = _qrl_Foo_component_handler_H10xZtD0e7w; return /*#__PURE__*/ _jsxSorted("div", null, { - "q-e:click": /*#__PURE__*/ qrl(i_YEa2A5ADUOg, "Foo_component_div_q_e_click_YEa2A5ADUOg"), - "q-e:documentscroll": /*#__PURE__*/ qrl(i_0FSbGzUROso, "Foo_component_div_q_e_documentscroll_0FSbGzUROso"), - "q-e:documentscroll": /*#__PURE__*/ qrl(i_d0Zn04qNgs0, "Foo_component_div_q_e_documentscroll_1_d0Zn04qNgs0"), - "q-e:c-lick": /*#__PURE__*/ qrl(i_kX5SiYdz650, "Foo_component_div_q_e_c_lick_kX5SiYdz650"), - "q-e:document--scroll": /*#__PURE__*/ qrl(i_6qyBttefepU, "Foo_component_div_q_e_document_scroll_6qyBttefepU"), - "q-e:document--scroll": /*#__PURE__*/ qrl(i_wphyTkeintI, "Foo_component_div_q_e_document_scroll_1_wphyTkeintI"), - "host:onClick$": /*#__PURE__*/ qrl(i_cPEH970JbEY, "Foo_component_div_host_onClick_cPEH970JbEY"), - "host:onDocumentScroll$": /*#__PURE__*/ qrl(i_Zip7mifsjRY, "Foo_component_div_host_onDocumentScroll_Zip7mifsjRY"), - "host:onDocumentScroll$": /*#__PURE__*/ qrl(i_Em1LspK7JVg, "Foo_component_div_host_onDocumentScroll_1_Em1LspK7JVg"), + "q-e:click": _qrl_Foo_component_div_q_e_click_YEa2A5ADUOg, + "q-e:documentscroll": _qrl_Foo_component_div_q_e_documentscroll_0FSbGzUROso, + "q-e:documentscroll": _qrl_Foo_component_div_q_e_documentscroll_1_d0Zn04qNgs0, + "q-e:c-lick": _qrl_Foo_component_div_q_e_c_lick_kX5SiYdz650, + "q-e:document--scroll": _qrl_Foo_component_div_q_e_document_scroll_6qyBttefepU, + "q-e:document--scroll": _qrl_Foo_component_div_q_e_document_scroll_1_wphyTkeintI, + "host:onClick$": _qrl_Foo_component_div_host_onClick_cPEH970JbEY, + "host:onDocumentScroll$": _qrl_Foo_component_div_host_onDocumentScroll_Zip7mifsjRY, + "host:onDocumentScroll$": _qrl_Foo_component_div_host_onDocumentScroll_1_Em1LspK7JVg, "q-e:keyup": handler, "q-e:document:keyup": handler, "q-e:window:keyup": handler, - custom$: /*#__PURE__*/ qrl(i_pyHnxab17ms, "Foo_component_div_custom_pyHnxab17ms") + custom$: _qrl_Foo_component_div_custom_pyHnxab17ms }, null, 3, "u6_0"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_lightweight_functional.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_lightweight_functional.snap index e97bee9021e..a68f4470b26 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_lightweight_functional.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_lightweight_functional.snap @@ -105,10 +105,10 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +const _qrl_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE"); const i_6YaNiKLqRnQ = ()=>import("./test.tsx_Button_button_q_e_click_6YaNiKLqRnQ"); -const i_HTDRsvUbLiE = ()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"); const i_rEE0GCaea7M = ()=>import("./test.tsx_ButtonArrow_button_q_e_click_rEE0GCaea7M"); -export const Foo = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_HTDRsvUbLiE, "Foo_component_HTDRsvUbLiE"), { +export const Foo = /*#__PURE__*/ componentQrl(_qrl_Foo_component_HTDRsvUbLiE, { tagName: "my-foo" }); export function Button({ text, color }) { @@ -124,7 +124,7 @@ export const ButtonArrow = (_rawProps)=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAGA,OAAO,MAAM,oBAAM,4EAOhB;IACF,SAAS;AACV,GAAG;AAEH,OAAO,SAAS,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC;IACnC,QACE,OAAO,WAAU,OAAO;;;SAAyC,OAAO;AAE3E;AAEA,OAAO,MAAM,cAAc;IAC1B,QACE,OAAO,qBAFyB,OAER;;mBAFE,OAE8C;AAE3E,EAAC\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAGA,OAAO,MAAM,oBAAM,6CAOhB;IACF,SAAS;AACV,GAAG;AAEH,OAAO,SAAS,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC;IACnC,QACE,OAAO,WAAU,OAAO;;;SAAyC,OAAO;AAE3E;AAEA,OAAO,MAAM,cAAc;IAC1B,QACE,OAAO,qBAFyB,OAER;;mBAFE,OAE8C;AAE3E,EAAC\"}") ============================= test.tsx_ButtonArrow_button_q_e_click_rEE0GCaea7M.tsx (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_manual_chunks.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_manual_chunks.snap index 289273b46dc..068d9068a2e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_manual_chunks.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_manual_chunks.snap @@ -85,13 +85,13 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_0TaiDayHrlo = ()=>import("./test.tsx_Parent_component_0TaiDayHrlo"); -const i_9GyF01GDKqw = ()=>import("./test.tsx_Child_component_9GyF01GDKqw"); -export const Parent = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_0TaiDayHrlo, "Parent_component_0TaiDayHrlo")); -export const Child = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_9GyF01GDKqw, "Child_component_9GyF01GDKqw")); +const _qrl_Child_component_9GyF01GDKqw = /*#__PURE__*/ qrl(()=>import("./test.tsx_Child_component_9GyF01GDKqw"), "Child_component_9GyF01GDKqw"); +const _qrl_Parent_component_0TaiDayHrlo = /*#__PURE__*/ qrl(()=>import("./test.tsx_Parent_component_0TaiDayHrlo"), "Parent_component_0TaiDayHrlo"); +export const Parent = /*#__PURE__*/ componentQrl(_qrl_Parent_component_0TaiDayHrlo); +export const Child = /*#__PURE__*/ componentQrl(_qrl_Child_component_9GyF01GDKqw); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAKA,OAAO,MAAM,uBAAS,+EAgBnB;AAEH,OAAO,MAAM,sBAAQ,8EAelB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAKA,OAAO,MAAM,uBAAS,gDAgBnB;AAEH,OAAO,MAAM,sBAAQ,+CAelB\"}") ============================= test.tsx_Child_component_useTask_Oh4n7ZeqJkU.js == import { _captures } from "@qwik.dev/core"; @@ -133,8 +133,8 @@ import { _wrapProp } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useStore } from "@qwik.dev/core"; import { useTaskQrl } from "@qwik.dev/core"; +const _qrl_Parent_component_div_q_e_click_zM9okM0TYrA = /*#__PURE__*/ qrl(()=>import("./test.tsx_Parent_component_div_q_e_click_zM9okM0TYrA"), "Parent_component_div_q_e_click_zM9okM0TYrA"); const i_gDH1EtUWqBU = ()=>import("./test.tsx_Parent_component_useTask_gDH1EtUWqBU"); -const i_zM9okM0TYrA = ()=>import("./test.tsx_Parent_component_div_q_e_click_zM9okM0TYrA"); export const Parent_component_0TaiDayHrlo = ()=>{ const state = useStore({ text: '' @@ -144,7 +144,7 @@ export const Parent_component_0TaiDayHrlo = ()=>{ state ])); return /*#__PURE__*/ _jsxSorted("div", null, { - "q-e:click": /*#__PURE__*/ qrl(i_zM9okM0TYrA, "Parent_component_div_q_e_click_zM9okM0TYrA") + "q-e:click": _qrl_Parent_component_div_q_e_click_zM9okM0TYrA }, _wrapProp(state, "text"), 3, "u6_0"); }; @@ -203,8 +203,8 @@ import { _wrapProp } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useStore } from "@qwik.dev/core"; import { useTaskQrl } from "@qwik.dev/core"; +const _qrl_Child_component_div_q_e_click_cROa4sult1s = /*#__PURE__*/ qrl(()=>import("./test.tsx_Child_component_div_q_e_click_cROa4sult1s"), "Child_component_div_q_e_click_cROa4sult1s"); const i_Oh4n7ZeqJkU = ()=>import("./test.tsx_Child_component_useTask_Oh4n7ZeqJkU"); -const i_cROa4sult1s = ()=>import("./test.tsx_Child_component_div_q_e_click_cROa4sult1s"); export const Child_component_9GyF01GDKqw = ()=>{ const state = useStore({ text: '' @@ -214,7 +214,7 @@ export const Child_component_9GyF01GDKqw = ()=>{ state ])); return /*#__PURE__*/ _jsxSorted("div", null, { - "q-e:click": /*#__PURE__*/ qrl(i_cROa4sult1s, "Child_component_div_q_e_click_cROa4sult1s") + "q-e:click": _qrl_Child_component_div_q_e_click_cROa4sult1s }, _wrapProp(state, "text"), 3, "u6_1"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_multi_capture.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_multi_capture.snap index 7946f1c92da..4ca4060e714 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_multi_capture.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_multi_capture.snap @@ -69,13 +69,13 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_HTDRsvUbLiE = ()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"); -const i_L80pS8Hxf1Y = ()=>import("./test.tsx_Bar_component_L80pS8Hxf1Y"); -export const Foo = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_HTDRsvUbLiE, "Foo_component_HTDRsvUbLiE")); -export const Bar = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_L80pS8Hxf1Y, "Bar_component_L80pS8Hxf1Y")); +const _qrl_Bar_component_L80pS8Hxf1Y = /*#__PURE__*/ qrl(()=>import("./test.tsx_Bar_component_L80pS8Hxf1Y"), "Bar_component_L80pS8Hxf1Y"); +const _qrl_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE"); +export const Foo = /*#__PURE__*/ componentQrl(_qrl_Foo_component_HTDRsvUbLiE); +export const Bar = /*#__PURE__*/ componentQrl(_qrl_Bar_component_L80pS8Hxf1Y); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAGA,OAAO,MAAM,oBAAM,4EAUjB;AAEF,OAAO,MAAM,oBAAM,4EAQjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAGA,OAAO,MAAM,oBAAM,6CAUjB;AAEF,OAAO,MAAM,oBAAM,6CAQjB\"}") ============================= test.tsx_Bar_component_L80pS8Hxf1Y.jsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_mutable_children.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_mutable_children.snap index 954a7c5a5a6..609b8bbce99 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_mutable_children.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_mutable_children.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2495 +assertion_line: 2496 expression: output -snapshot_kind: text --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_noop_dev_mode.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_noop_dev_mode.snap index 2b161635290..21c6a876945 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_noop_dev_mode.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_noop_dev_mode.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3815 +assertion_line: 3825 expression: output --- ==INPUT== @@ -34,22 +34,34 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrlDEV } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrlDEV(i_ckEPmXZlub0, "App_component_ckEPmXZlub0", { +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrlDEV(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0", { file: "/hello/from/dev/test.tsx", lo: 105, hi: 452, displayName: "test.tsx_App_component" -})); +}); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM;;;;;IAoBhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;AAGA,OAAO,MAAM,oBAAM,6CAoBhB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== import { _jsxSorted } from "@qwik.dev/core"; import { _noopQrlDEV } from "@qwik.dev/core"; import { serverStuffQrl } from "@qwik.dev/core"; import { useStore } from "@qwik.dev/core"; +const _qrl_qrl_4294901761 = /*#__PURE__*/ _noopQrlDEV("App_component_serverStuff_1_PQCqO0ANabY", { + file: "/hello/from/dev/test.tsx", + lo: 0, + hi: 0, + displayName: "test.tsx_App_component_serverStuff_1" +}); +const _qrl_qrl_4294901764 = /*#__PURE__*/ _noopQrlDEV("App_component_Cmp_p_q_e_click_Yl4ybrJWrt4", { + file: "/hello/from/dev/test.tsx", + lo: 0, + hi: 0, + displayName: "test.tsx_App_component_Cmp_p_q_e_click" +}); export const App_component_ckEPmXZlub0 = ()=>{ const stuff = useStore(); serverStuffQrl(/*#__PURE__*/ _noopQrlDEV("App_component_serverStuff_ebyHaP15ytQ", { @@ -60,12 +72,7 @@ export const App_component_ckEPmXZlub0 = ()=>{ }, [ stuff ])); - serverStuffQrl(/*#__PURE__*/ _noopQrlDEV("App_component_serverStuff_1_PQCqO0ANabY", { - file: "/hello/from/dev/test.tsx", - lo: 0, - hi: 0, - displayName: "test.tsx_App_component_serverStuff_1" - })); + serverStuffQrl(_qrl_qrl_4294901761); return /*#__PURE__*/ _jsxSorted(Cmp, null, null, /*#__PURE__*/ _jsxSorted("p", null, { class: "stuff", shouldRemove$: /*#__PURE__*/ _noopQrlDEV("App_component_Cmp_p_shouldRemove_uU0MG0jvQD4", { @@ -76,12 +83,7 @@ export const App_component_ckEPmXZlub0 = ()=>{ }, [ stuff ]), - "q-e:click": /*#__PURE__*/ _noopQrlDEV("App_component_Cmp_p_q_e_click_Yl4ybrJWrt4", { - file: "/hello/from/dev/test.tsx", - lo: 0, - hi: 0, - displayName: "test.tsx_App_component_Cmp_p_q_e_click" - }) + "q-e:click": _qrl_qrl_4294901764 }, "Hello Qwik", 3, null, { fileName: "/hello/from/dev/test.tsx", lineNumber: 16, @@ -94,7 +96,7 @@ export const App_component_ckEPmXZlub0 = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;yCAG8B;IAC7B,MAAM,QAAQ;IACd;;;;;;;;IAIA;;;;;;IAIA,qBACC,WAAC,+BACA,WAAC;QAAE,OAAM;QACR,aAAa;;;;;;;;QACb,WAAQ;;;;;;OACR;;;;;;;;;AAKJ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;;;;yCAG8B;IAC7B,MAAM,QAAQ;IACd;;;;;;;;IAIA;IAIA,qBACC,WAAC,+BACA,WAAC;QAAE,OAAM;QACR,aAAa;;;;;;;;QACb,WAAQ;OACR;;;;;;;;;AAKJ\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_of_synchronous_qrl.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_of_synchronous_qrl.snap index 5dd7b5597c3..cde1e2899bf 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_of_synchronous_qrl.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_of_synchronous_qrl.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3594 +assertion_line: 3604 expression: output --- ==INPUT== @@ -27,11 +27,11 @@ expression: output import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,6EAaZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,8CAaZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_optimization_issue_3542.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_optimization_issue_3542.snap index 24b1eeeaab4..87d17a75ecd 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_optimization_issue_3542.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_optimization_issue_3542.snap @@ -26,16 +26,17 @@ export const AtomStatus = component$(({ctx,atom})=>{ import { componentQrl } from "@qwik.dev/core"; import { _captures } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; -export const AtomStatus = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_rawProps)=>{ +const AtomStatus_component_span_q_e_click_0yqKAycyBF0 = (ev)=>{ + const _rawProps = _captures[0]; + return atomStatusClick(_rawProps.ctx, ev, [ + _rawProps.atom + ]); +}; +const AtomStatus_component_hdwpoUtydSA = (_rawProps)=>{ let status = _rawProps.atom.status; if (!_rawProps.atom.real) status = "WILL-VANISH"; else if (JSON.stringify(_rawProps.atom.atom) == JSON.stringify(_rawProps.atom.real)) status = "WTFED"; - return { - const _rawProps = _captures[0]; - return atomStatusClick(_rawProps.ctx, ev, [ - _rawProps.atom - ]); - }, "AtomStatus_component_span_q_e_click_0yqKAycyBF0", [ + return ; -}, "AtomStatus_component_hdwpoUtydSA")); +}; +export const AtomStatus = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(AtomStatus_component_hdwpoUtydSA, "AtomStatus_component_hdwpoUtydSA")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,2BAAa,sCAAW;IACpC,IAAI,SAAS,UAD6B,KACxB,MAAM;IACxB,IAAG,CAAC,UAFsC,KAEjC,IAAI,EACZ,SAAO;SACD,IAAI,KAAK,SAAS,CAAC,UAJgB,KAIX,IAAI,KAAG,KAAK,SAAS,CAAC,UAJX,KAIgB,IAAI,GAC7D,SAAO;IAER,QACE,KAAK,OAAO,UAR4B,KAQvB,EAAE,EAAE,oCAAU,CAAC;;eAAK,0BARD,KAQqB,IAAG;sBARpB;SAQ0B;;;QAAG,OAAO;QAAC;QAAO;QAAO,UARvD,IAQ2D,KAAK,CAAC,UAR7D,KAQkE,EAAE,CAAC,GAAC,aAAW;KAAK,EAAE;EACjI,EAAE;AAEJ,wCAAE\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;wDAWkC,CAAC;;WAAK,0BARD,KAQqB,IAAG;kBARpB;KAQ0B;;yCARhC;IACpC,IAAI,SAAS,UAD6B,KACxB,MAAM;IACxB,IAAG,CAAC,UAFsC,KAEjC,IAAI,EACZ,SAAO;SACD,IAAI,KAAK,SAAS,CAAC,UAJgB,KAIX,IAAI,KAAG,KAAK,SAAS,CAAC,UAJX,KAIgB,IAAI,GAC7D,SAAO;IAER,QACE,KAAK,OAAO,UAR4B,KAQvB,EAAE,EAAE;;QAAgD,OAAO;QAAC;QAAO;QAAO,UARvD,IAQ2D,KAAK,CAAC,UAR7D,KAQkE,EAAE,CAAC,GAAC,aAAW;KAAK,EAAE;EACjI,EAAE;AAEJ;AAXA,OAAO,MAAM,2BAAa,6GAWxB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_optimization_issue_3561.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_optimization_issue_3561.snap index 4f088940b59..f8374fe3b54 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_optimization_issue_3561.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_optimization_issue_3561.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 706 +assertion_line: 707 expression: output -snapshot_kind: text --- ==INPUT== @@ -32,7 +31,7 @@ export const Issue3561 = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; -export const Issue3561 = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(()=>{ +const Issue3561_component_hHTw654BZB8 = ()=>{ const props = useStore({ product: { currentVariant: { @@ -45,10 +44,11 @@ export const Issue3561 = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(()= const { currentVariant: { variantImage, variantNumber, setContents } = {} } = props.product; console.log(variantImage, variantNumber, setContents); return

; -}, "Issue3561_component_hHTw654BZB8")); +}; +export const Issue3561 = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(Issue3561_component_hHTw654BZB8, "Issue3561_component_hHTw654BZB8")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AAGA,OAAO,MAAM,0BAAY,sCAAW;IACnC,MAAM,QAAQ,SAAS;QACtB,SAAS;YACT,gBAAgB;gBACf,cAAc;gBACd,eAAe;gBACf,aAAa;YACd;QACA;IACD;IACA,MAAM,EACL,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,EACjE,GAAG,MAAM,OAAO;IAEjB,QAAQ,GAAG,CAAC,cAAc,eAAe;IAEzC,QAAQ,IAAI;AACZ,uCAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;wCAGoC;IACnC,MAAM,QAAQ,SAAS;QACtB,SAAS;YACT,gBAAgB;gBACf,cAAc;gBACd,eAAe;gBACf,aAAa;YACd;QACA;IACD;IACA,MAAM,EACL,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,EACjE,GAAG,MAAM,OAAO;IAEjB,QAAQ,GAAG,CAAC,cAAc,eAAe;IAEzC,QAAQ,IAAI;AACZ;AAjBD,OAAO,MAAM,0BAAY,2GAiBrB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_optimization_issue_3795.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_optimization_issue_3795.snap index c2a20c3f9c2..c480addd7a2 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_optimization_issue_3795.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_optimization_issue_3795.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 796 +assertion_line: 797 expression: output -snapshot_kind: text --- ==INPUT== @@ -24,7 +23,7 @@ export const Issue3795 = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; -export const Issue3795 = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(()=>{ +const Issue3795_component_wsE8beycatI = ()=>{ let base = "foo"; const firstAssignment = base; base += "bar"; @@ -36,10 +35,11 @@ export const Issue3795 = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(()= " ", secondAssignment ], 1, "u6_0"); -}, "Issue3795_component_wsE8beycatI")); +}; +export const Issue3795 = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(Issue3795_component_wsE8beycatI, "Issue3795_component_wsE8beycatI")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,0BAAY,sCAAW;IACnC,IAAI,OAAO;IACX,MAAM,kBAAkB;IACxB,QAAQ;IACR,MAAM,mBAAmB;IACzB,qBACC,WAAC;QAAI,IAAG;;QAAqB;QAAgB;QAAE;;AAEhD,uCAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;wCAGoC;IACnC,IAAI,OAAO;IACX,MAAM,kBAAkB;IACxB,QAAQ;IACR,MAAM,mBAAmB;IACzB,qBACC,WAAC;QAAI,IAAG;;QAAqB;QAAgB;QAAE;;AAEhD;AARD,OAAO,MAAM,0BAAY,2GAQrB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_optimization_issue_4386.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_optimization_issue_4386.snap index 744da8363d9..fbea524a05d 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_optimization_issue_4386.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_optimization_issue_4386.snap @@ -30,12 +30,13 @@ export const FOO_MAPPING = { B: 2, C: 3 }; -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(()=>{ +const test_component_LUXeXe0DQrg = ()=>{ return <>{FOO_MAPPING['A']}; -}, "test_component_LUXeXe0DQrg")); +}; +export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(test_component_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AAGA,OAAO,MAAM,cAAc;IAC1B,GAAG;IACH,GAAG;IACH,GAAG;AACH,EAAE;AAEF,6BAAe,sCAAW;IAI1B,UAFc,WAAW,CADb,IACkB;AAG9B,kCAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AAGA,OAAO,MAAM,cAAc;IAC1B,GAAG;IACH,GAAG;IACH,GAAG;AACH,EAAE;mCAEwB;IAI1B,UAFc,WAAW,CADb,IACkB;AAG9B;AALA,6BAAe,iGAKZ\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_parsed_inlined_qrls.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_parsed_inlined_qrls.snap index 486085820bf..751d4846773 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_parsed_inlined_qrls.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_parsed_inlined_qrls.snap @@ -46,7 +46,12 @@ export const STYLES = ".red { color: red; }"; import { _wrapProp } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { componentQrl, inlinedQrl, useStore, useLexicalScope } from '@qwik.dev/core'; -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(()=>{ +const s_odz7eidI4GM = ()=>{ + const [store] = useLexicalScope(); + return store.count++; +}; +export const STYLES = ".red { color: red; }"; +const s_Fh88JClhbC0 = ()=>{ useStyles$(/*#__PURE__*/ inlinedQrl(STYLES, "s_odz7dfdfdM")); useStyles$(/*#__PURE__*/ inlinedQrl(STYLES, "s_odzdfdfdM")); const store = useStore({ @@ -58,19 +63,16 @@ export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(()=>{ _wrapProp(store, "count") ], 3, null), /*#__PURE__*/ _jsxSorted("p", null, null, /*#__PURE__*/ _jsxSorted("button", { - "q-e:click": /*#__PURE__*/ inlinedQrl(()=>{ - const [store] = useLexicalScope(); - return store.count++; - }, "s_odz7eidI4GM", [ + "q-e:click": /*#__PURE__*/ inlinedQrl(s_odz7eidI4GM, "s_odz7eidI4GM", [ store ]) }, null, "Click", 2, null), 1, null) ], 1, "u6_0"); -}, "s_Fh88JClhbC0")); -export const STYLES = ".red { color: red; }"; +}; +export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(s_Fh88JClhbC0, "s_Fh88JClhbC0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AACA,SAAS,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAa,eAAe,QAAQ,iBAAiB;AAEhG,OAAO,MAAM,MAAM,WAAW,GAAG,sCAAwB;IACxD,oCAAsB;IACtB,oCAAsB;IAEtB,MAAM,QAAQ,SAAS;QACtB,OAAO;IACR;IACA,OAAO,WAAW,GAAG,WAAK,mBACf;QACT,WAAW,GAAG,WAAK,iBACR;YACT;sBACA;SACA;QAEF,WAAW,GAAG,WAAI,iBACP,WAAW,GAAG,WAAI;YAC3B,WAAQ,2BAAa;gBACpB,MAAM,CAAC,MAAM,GAAG;gBAChB,OAAO,MAAM,KAAK;YACnB;;;iBAGU;KAGZ;AAEH,qBAAiC;AAEjC,OAAO,MAAM,SAAS,uBAAuB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AACA,SAAS,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAa,eAAe,QAAQ,iBAAiB;sBAmBtE;IACpB,MAAM,CAAC,MAAM,GAAG;IAChB,OAAO,MAAM,KAAK;AACnB;AAUL,OAAO,MAAM,SAAS,uBAAuB;sBA9BY;IACxD,oCAAsB;IACtB,oCAAsB;IAEtB,MAAM,QAAQ,SAAS;QACtB,OAAO;IACR;IACA,OAAO,WAAW,GAAG,WAAK,mBACf;QACT,WAAW,GAAG,WAAK,iBACR;YACT;sBACA;SACA;QAEF,WAAW,GAAG,WAAI,iBACP,WAAW,GAAG,WAAI;YAC3B,WAAQ;;;iBAME;KAGZ;AAEH;AA5BA,OAAO,MAAM,MAAM,WAAW,GAAG,uEA4BA\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_preserve_filenames.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_preserve_filenames.snap index 59e12eaa8dc..52c6b1ac6f8 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_preserve_filenames.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_preserve_filenames.snap @@ -21,15 +21,17 @@ export const App = component$((props) => { import { componentQrl } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((props)=>{ +const App_component_Cmp_p_q_e_click_Yl4ybrJWrt4 = ()=>console.log('warn'); +const App_component_ckEPmXZlub0 = (props)=>{ return /*#__PURE__*/ _jsxSorted(Cmp, null, null, /*#__PURE__*/ _jsxSorted("p", null, { class: "stuff", - "q-e:click": /*#__PURE__*/ inlinedQrl(()=>console.log('warn'), "App_component_Cmp_p_q_e_click_Yl4ybrJWrt4") + "q-e:click": /*#__PURE__*/ inlinedQrl(App_component_Cmp_p_q_e_click_Yl4ybrJWrt4, "App_component_Cmp_p_q_e_click_Yl4ybrJWrt4") }, "Hello Qwik", 3, null), 3, "u6_0"); -}, "App_component_ckEPmXZlub0")); +}; +export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(App_component_ckEPmXZlub0, "App_component_ckEPmXZlub0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,sCAAW,CAAC;IAC9B,qBACC,WAAC,+BACA,WAAC;QAAE,OAAM;QAAQ,WAAQ,2BAAE,IAAM,QAAQ,GAAG,CAAC;OAAS;AAGzD,iCAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;kDAM8B,IAAM,QAAQ,GAAG,CAAC;kCAHlB,CAAC;IAC9B,qBACC,WAAC,+BACA,WAAC;QAAE,OAAM;QAAQ,WAAQ;OAA6B;AAGzD;AANA,OAAO,MAAM,oBAAM,+FAMhB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_preserve_filenames_segments.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_preserve_filenames_segments.snap index 3cf0de8fc6d..bcc2f4f6043 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_preserve_filenames_segments.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_preserve_filenames_segments.snap @@ -23,23 +23,23 @@ export const foo = () => console.log('foo'); import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0.js"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0.js"), "App_component_ckEPmXZlub0"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); export const foo = ()=>console.log('foo'); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,4EAOhB;AAEH,OAAO,MAAM,MAAM,IAAM,QAAQ,GAAG,CAAC,OAAO\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CAOhB;AAEH,OAAO,MAAM,MAAM,IAAM,QAAQ,GAAG,CAAC,OAAO\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== -import { _jsxSorted } from "@qwik.dev/core"; import { foo } from "./test.tsx"; +import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_Yl4ybrJWrt4 = ()=>import("./test.tsx_App_component_Cmp_p_q_e_click_Yl4ybrJWrt4.js"); +const _qrl_App_component_Cmp_p_q_e_click_Yl4ybrJWrt4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_Cmp_p_q_e_click_Yl4ybrJWrt4.js"), "App_component_Cmp_p_q_e_click_Yl4ybrJWrt4"); export const App_component_ckEPmXZlub0 = (props)=>{ foo(); return /*#__PURE__*/ _jsxSorted(Cmp, null, null, /*#__PURE__*/ _jsxSorted("p", null, { class: "stuff", - "q-e:click": /*#__PURE__*/ qrl(i_Yl4ybrJWrt4, "App_component_Cmp_p_q_e_click_Yl4ybrJWrt4") + "q-e:click": _qrl_App_component_Cmp_p_q_e_click_Yl4ybrJWrt4 }, "Hello Qwik", 3, null), 3, "u6_0"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_prod_node.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_prod_node.snap index cd996ca0fba..848913e87b0 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_prod_node.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_prod_node.snap @@ -21,19 +21,19 @@ export const Foo = component$(() => { ============================= test.tsx_Foo_component_HTDRsvUbLiE.tsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; -const i_VSoqbTjzr4w = ()=>import("./test.tsx_Foo_component_div_div_q_e_click_1_VSoqbTjzr4w"); -const i_n19LdlqL6To = ()=>import("./test.tsx_Foo_component_div_div_q_e_click_2_n19LdlqL6To"); -const i_vKrX4PmH2aM = ()=>import("./test.tsx_Foo_component_div_div_q_e_click_vKrX4PmH2aM"); +const _qrl_s_VSoqbTjzr4w = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_div_q_e_click_1_VSoqbTjzr4w"), "s_VSoqbTjzr4w"); +const _qrl_s_n19LdlqL6To = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_div_q_e_click_2_n19LdlqL6To"), "s_n19LdlqL6To"); +const _qrl_s_vKrX4PmH2aM = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_div_q_e_click_vKrX4PmH2aM"), "s_vKrX4PmH2aM"); export const s_HTDRsvUbLiE = ()=>{ return
-
-
-
+
+
+
; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;6BAG8B;IAC7B,QACE,IAAI;GACJ,CAAC,IAAI,+DAAuC;GAC5C,CAAC,IAAI,+DAAwC;GAC7C,CAAC,IAAI,+DAAuC;EAC7C,EAAE;AAEJ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;6BAG8B;IAC7B,QACE,IAAI;GACJ,CAAC,IAAI,gCAAuC;GAC5C,CAAC,IAAI,gCAAwC;GAC7C,CAAC,IAAI,gCAAuC;EAC7C,EAAE;AAEJ\"}") /* { "origin": "test.tsx", @@ -136,11 +136,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_HTDRsvUbLiE = ()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"); -export const Foo = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_HTDRsvUbLiE, "s_HTDRsvUbLiE")); +const _qrl_s_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "s_HTDRsvUbLiE"); +export const Foo = /*#__PURE__*/ componentQrl(_qrl_s_HTDRsvUbLiE); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,gEAQhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,iCAQhB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_optimization.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_optimization.snap index 88e73edb2de..0458bb8b261 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_optimization.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_optimization.snap @@ -60,13 +60,46 @@ import { _getVarProps } from "@qwik.dev/core"; import { _getConstProps } from "@qwik.dev/core"; import { _jsxSplit } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; +const NoWorks2_component_useTask_lXiqwbxxjq0 = ({ track })=>{ + const count = _captures[0]; + track(()=>count); + console.log(count); +}; +const NoWorks2_component_JPD9t2HyEKg = ({ count, stuff: { hey } })=>{ + console.log(hey); + useTaskQrl(/*#__PURE__*/ inlinedQrl(NoWorks2_component_useTask_lXiqwbxxjq0, "NoWorks2_component_useTask_lXiqwbxxjq0", [ + count + ])); + return /*#__PURE__*/ _jsxSorted("div", { + class: count + }, null, count, 1, "u6_1"); +}; +const NoWorks3_component_useTask_3cQGU0s1VwU = ({ track })=>{ + const count = _captures[0]; + track(()=>count); + console.log(count); +}; +const NoWorks3_component_fc13h5yYn14 = ({ count, stuff = hola() })=>{ + console.log(stuff); + useTaskQrl(/*#__PURE__*/ inlinedQrl(NoWorks3_component_useTask_3cQGU0s1VwU, "NoWorks3_component_useTask_3cQGU0s1VwU", [ + count + ])); + return /*#__PURE__*/ _jsxSorted("div", { + class: count + }, null, count, 1, "u6_2"); +}; +const Works_component_useTask_pjo5U5Ikll0 = ({ track })=>{ + const _rawProps = _captures[0], rest = _captures[1]; + track(()=>_rawProps.count); + console.log(_rawProps.count, rest, _rawProps.stuff, _rawProps.some ?? 3, _rawProps.stuffDefault ?? 123); +}; const _hf0 = (p0)=>p0.some ?? 3; const _hf0_str = "p0.some??1+2"; const _hf1 = (p0)=>({ some: p0.some ?? 3 }); const _hf1_str = "{some:p0.some??1+2}"; -export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_rawProps)=>{ +const Works_component_t45qL4vNGv0 = (_rawProps)=>{ const rest = _restProps(_rawProps, [ "count", "some", @@ -75,11 +108,7 @@ export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_rawPr "stuffDefault" ]); console.log(_rawProps.stuff, _rawProps.some ?? 3); - useTaskQrl(/*#__PURE__*/ inlinedQrl(({ track })=>{ - const _rawProps = _captures[0], rest = _captures[1]; - track(()=>_rawProps.count); - console.log(_rawProps.count, rest, _rawProps.stuff, _rawProps.some ?? 3, _rawProps.stuffDefault ?? 123); - }, "Works_component_useTask_pjo5U5Ikll0", [ + useTaskQrl(/*#__PURE__*/ inlinedQrl(Works_component_useTask_pjo5U5Ikll0, "Works_component_useTask_pjo5U5Ikll0", [ _rawProps, rest ])); @@ -96,36 +125,13 @@ export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_rawPr ..._getConstProps(rest), override: true }, _wrapProp(_rawProps, "count"), 0, "u6_0"); -}, "Works_component_t45qL4vNGv0")); -export const NoWorks2 = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(({ count, stuff: { hey } })=>{ - console.log(hey); - useTaskQrl(/*#__PURE__*/ inlinedQrl(({ track })=>{ - const count = _captures[0]; - track(()=>count); - console.log(count); - }, "NoWorks2_component_useTask_lXiqwbxxjq0", [ - count - ])); - return /*#__PURE__*/ _jsxSorted("div", { - class: count - }, null, count, 1, "u6_1"); -}, "NoWorks2_component_JPD9t2HyEKg")); -export const NoWorks3 = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(({ count, stuff = hola() })=>{ - console.log(stuff); - useTaskQrl(/*#__PURE__*/ inlinedQrl(({ track })=>{ - const count = _captures[0]; - track(()=>count); - console.log(count); - }, "NoWorks3_component_useTask_3cQGU0s1VwU", [ - count - ])); - return /*#__PURE__*/ _jsxSorted("div", { - class: count - }, null, count, 1, "u6_2"); -}, "NoWorks3_component_fc13h5yYn14")); +}; +export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(Works_component_t45qL4vNGv0, "Works_component_t45qL4vNGv0")); +export const NoWorks2 = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(NoWorks2_component_JPD9t2HyEKg, "NoWorks2_component_JPD9t2HyEKg")); +export const NoWorks3 = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(NoWorks3_component_fc13h5yYn14, "NoWorks3_component_fc13h5yYn14")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;;sBAKC,QAAO;;mBAWmB,CAAA;QAAE,IAAI,KAXhC,QAAO;IAW0B,CAAA;;AAblC,OAAO,MAAM,sBAAQ,sCAAW;;;;;;;;IAO/B,QAAQ,GAAG,WAHX,iBAFA,QAAO;IAMP,oCAAS,CAAC,EAAC,KAAK,EAAC;;QAChB,MAAM,cARP;QASC,QAAQ,GAAG,WATZ,OASoB,gBANpB,iBAFA,QAAO,aAGP,gBAAqB;;;;;IAOrB,qBACC,UAAC;QAAI,IAAI;;;QAAQ,MAAM;;;QAAY,KAAK;wBAAa;;0BAAA;QAAM,QAAQ;;AAErE,mCAAG;AAEH,OAAO,MAAM,yBAAW,sCAAW,CAAC,EAAC,KAAK,EAAE,OAAO,EAAC,GAAG,EAAC,EAAC;IACxD,QAAQ,GAAG,CAAC;IACZ,oCAAS,CAAC,EAAC,KAAK,EAAC;;QAChB,MAAM,IAAM;QACZ,QAAQ,GAAG,CAAC;;;;IAEb,qBACC,WAAC;QAAI,OAAO;aAAQ;AAEtB,sCAAG;AAEH,OAAO,MAAM,yBAAW,sCAAW,CAAC,EAAC,KAAK,EAAE,QAAQ,MAAM,EAAC;IAC1D,QAAQ,GAAG,CAAC;IACZ,oCAAS,CAAC,EAAC,KAAK,EAAC;;QAChB,MAAM,IAAM;QACZ,QAAQ,GAAG,CAAC;;;;IAEb,qBACC,WAAC;QAAI,OAAO;aAAQ;AAEtB,sCAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;;+CAsBU,CAAC,EAAC,KAAK,EAAC;;IAChB,MAAM,IAAM;IACZ,QAAQ,GAAG,CAAC;;uCAJqB,CAAC,EAAC,KAAK,EAAE,OAAO,EAAC,GAAG,EAAC,EAAC;IACxD,QAAQ,GAAG,CAAC;IACZ;;;IAIA,qBACC,WAAC;QAAI,OAAO;aAAQ;AAEtB;+CAIU,CAAC,EAAC,KAAK,EAAC;;IAChB,MAAM,IAAM;IACZ,QAAQ,GAAG,CAAC;;uCAJqB,CAAC,EAAC,KAAK,EAAE,QAAQ,MAAM,EAAC;IAC1D,QAAQ,GAAG,CAAC;IACZ;;;IAIA,qBACC,WAAC;QAAI,OAAO;aAAQ;AAEtB;4CA7BU,CAAC,EAAC,KAAK,EAAC;;IAChB,MAAM,cARP;IASC,QAAQ,GAAG,WATZ,OASoB,gBANpB,iBAFA,QAAO,aAGP,gBAAqB;;sBAHrB,QAAO;;mBAWmB,CAAA;QAAE,IAAI,KAXhC,QAAO;IAW0B,CAAA;;oCAbF;;;;;;;;IAO/B,QAAQ,GAAG,WAHX,iBAFA,QAAO;IAMP;;;;IAIA,qBACC,UAAC;QAAI,IAAI;;;QAAQ,MAAM;;;QAAY,KAAK;wBAAa;;0BAAA;QAAM,QAAQ;;AAErE;AAfA,OAAO,MAAM,sBAAQ,mGAelB;AAEH,OAAO,MAAM,yBAAW,yGASrB;AAEH,OAAO,MAAM,yBAAW,yGASrB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_wrapping.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_wrapping.snap index e02496dc8ea..7ab957f426a 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_wrapping.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_wrapping.snap @@ -28,6 +28,7 @@ import { _fnSignal } from "@qwik.dev/core"; import { _wrapProp } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; +import { useSignal } from '@qwik.dev/core'; const _hf0 = (p0, p1)=>p1 + p0.fromProps; const _hf0_str = "p1+p0.fromProps"; const _hf1 = (p0)=>({ @@ -39,8 +40,7 @@ const _hf2 = (p0, p1)=>({ local: p1 }); const _hf2_str = "{props:p0.fromProps,local:p1}"; -import { useSignal } from '@qwik.dev/core'; -export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_rawProps)=>{ +const Works_component_t45qL4vNGv0 = (_rawProps)=>{ let fromLocal = useSignal(0); return /*#__PURE__*/ _jsxSorted("div", { computed: _fnSignal(_hf0, [ @@ -57,10 +57,11 @@ export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_rawPr ], _hf1_str), "props-wrap": _wrapProp(_rawProps, "fromProps") }, null, null, 3, "u6_0"); -}, "Works_component_t45qL4vNGv0")); +}; +export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(Works_component_t45qL4vNGv0, "Works_component_t45qL4vNGv0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;uBAMa,QAJqB;;mBAOnB,CAAA;QAAC,KAAK,KAPa;IAOF,CAAA;;uBACtB,CAAA;QAAC,KAAK,KARkB;QAQL,KAAK;IAAW,CAAA;;AAT7C,SAAwB,SAAS,QAAQ,iBAAiB;AAC1D,OAAO,MAAM,sBAAQ,sCAAW;IAC/B,IAAI,YAAY,UAAU;IAC1B,qBACC,WAAC;QACA,QAAQ;;;;QACR,OAAO;QAGP,KAAK;;;;QADL,YAAU;;;QADV,YAAU;;AAMb,mCAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AACA,SAAwB,SAAS,QAAQ,iBAAiB;uBAK7C,QAJqB;;mBAOnB,CAAA;QAAC,KAAK,KAPa;IAOF,CAAA;;uBACtB,CAAA;QAAC,KAAK,KARkB;QAQL,KAAK;IAAW,CAAA;;oCARb;IAC/B,IAAI,YAAY,UAAU;IAC1B,qBACC,WAAC;QACA,QAAQ;;;;QACR,OAAO;QAGP,KAAK;;;;QADL,YAAU;;;QADV,YAAU;;AAMb;AAZA,OAAO,MAAM,sBAAQ,mGAYlB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_wrapping2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_wrapping2.snap index 4d98dabdd60..58bb3bec835 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_wrapping2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_wrapping2.snap @@ -28,6 +28,7 @@ import { _fnSignal } from "@qwik.dev/core"; import { _wrapProp } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; +import { useSignal } from '@qwik.dev/core'; const _hf0 = (p0, p1)=>p0 + p1.fromProps; const _hf0_str = "p0+p1.fromProps"; const _hf1 = (p0)=>({ @@ -39,8 +40,7 @@ const _hf2 = (p0, p1)=>({ local: p0 }); const _hf2_str = "{props:p1.fromProps,local:p0}"; -import { useSignal } from '@qwik.dev/core'; -export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((props)=>{ +const Works_component_t45qL4vNGv0 = (props)=>{ let fromLocal = useSignal(0); return /*#__PURE__*/ _jsxSorted("div", { computed: _fnSignal(_hf0, [ @@ -57,10 +57,11 @@ export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((props) ], _hf1_str), "props-wrap": _wrapProp(props, "fromProps") }, null, null, 3, "u6_0"); -}, "Works_component_t45qL4vNGv0")); +}; +export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(Works_component_t45qL4vNGv0, "Works_component_t45qL4vNGv0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;uBAMa,KAAY,GAAM,SAAS;;mBAGzB,CAAA;QAAC,OAAO,GAAM,SAAS;IAAA,CAAA;;uBAC5B,CAAA;QAAC,OAAO,GAAM,SAAS;QAAE,KAAK;IAAW,CAAA;;AATnD,SAAwB,SAAS,QAAQ,iBAAiB;AAC1D,OAAO,MAAM,sBAAQ,sCAAW,CAAC;IAChC,IAAI,YAAY,UAAU;IAC1B,qBACC,WAAC;QACA,QAAQ;;;;QACR,OAAO;QAGP,KAAK;;;;QADL,YAAU;;;QADV,YAAU,YAAE;;AAMf,mCAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AACA,SAAwB,SAAS,QAAQ,iBAAiB;uBAK7C,KAAY,GAAM,SAAS;;mBAGzB,CAAA;QAAC,OAAO,GAAM,SAAS;IAAA,CAAA;;uBAC5B,CAAA;QAAC,OAAO,GAAM,SAAS;QAAE,KAAK;IAAW,CAAA;;oCARnB,CAAC;IAChC,IAAI,YAAY,UAAU;IAC1B,qBACC,WAAC;QACA,QAAQ;;;;QACR,OAAO;QAGP,KAAK;;;;QADL,YAAU;;;QADV,YAAU,YAAE;;AAMf;AAZA,OAAO,MAAM,sBAAQ,mGAYlB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_wrapping_children.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_wrapping_children.snap index 7d70b60f19c..2dbfc4cddf8 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_wrapping_children.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_wrapping_children.snap @@ -28,6 +28,7 @@ import { _wrapProp } from "@qwik.dev/core"; import { _fnSignal } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; +import { useSignal } from '@qwik.dev/core'; const _hf0 = (p0, p1)=>p1 + p0.fromProps; const _hf0_str = "p1+p0.fromProps"; const _hf1 = (p0)=>({ @@ -39,8 +40,7 @@ const _hf2 = (p0, p1)=>({ local: p1 }); const _hf2_str = "{props:p0.fromProps,local:p1}"; -import { useSignal } from '@qwik.dev/core'; -export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_rawProps)=>{ +const Works_component_t45qL4vNGv0 = (_rawProps)=>{ let fromLocal = useSignal(0); return /*#__PURE__*/ _jsxSorted("div", null, null, [ fromLocal, @@ -60,10 +60,11 @@ export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_rawPr fromLocal ], _hf2_str) ], 1, "u6_0"); -}, "Works_component_t45qL4vNGv0")); +}; +export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(Works_component_t45qL4vNGv0, "Works_component_t45qL4vNGv0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;uBAQI,QAN8B;;mBAO9B,CAAA;QAAC,KAAK,KAPwB;IAOb,CAAA;;uBAEjB,CAAA;QAAC,KAAK,KATwB;QASX,KAAK;IAAW,CAAA;;AAVvC,SAAwB,SAAS,QAAQ,iBAAiB;AAC1D,OAAO,MAAM,sBAAQ,sCAAW;IAC/B,IAAI,YAAY,UAAU;IAC1B,qBACC,WAAC;QACC;;;;;;;;;QAIA;YAAC,OAAO;QAAS;;;;;;AAIrB,mCAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AACA,SAAwB,SAAS,QAAQ,iBAAiB;uBAOtD,QAN8B;;mBAO9B,CAAA;QAAC,KAAK,KAPwB;IAOb,CAAA;;uBAEjB,CAAA;QAAC,KAAK,KATwB;QASX,KAAK;IAAW,CAAA;;oCATP;IAC/B,IAAI,YAAY,UAAU;IAC1B,qBACC,WAAC;QACC;;;;;;;;;QAIA;YAAC,OAAO;QAAS;;;;;;AAIrB;AAZA,OAAO,MAAM,sBAAQ,mGAYlB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_wrapping_children2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_wrapping_children2.snap index 239a0349c40..55f04930689 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_wrapping_children2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_props_wrapping_children2.snap @@ -30,6 +30,7 @@ import { _wrapProp } from "@qwik.dev/core"; import { _fnSignal } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; +import { useSignal } from '@qwik.dev/core'; const _hf0 = (p0, p1)=>p0 + p1.fromProps; const _hf0_str = "p0+p1.fromProps"; const _hf1 = (p0)=>({ @@ -41,8 +42,7 @@ const _hf2 = (p0, p1)=>({ local: p0 }); const _hf2_str = "{props:p1.fromProps,local:p0}"; -import { useSignal } from '@qwik.dev/core'; -export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((props)=>{ +const Works_component_t45qL4vNGv0 = (props)=>{ let fromLocal = useSignal(0); return /*#__PURE__*/ _jsxSorted("div", null, null, [ "before-", @@ -64,10 +64,11 @@ export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((props) ], _hf2_str), "-after" ], 1, "u6_0"); -}, "Works_component_t45qL4vNGv0")); +}; +export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(Works_component_t45qL4vNGv0, "Works_component_t45qL4vNGv0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;uBASI,KAAY,GAAM,SAAS;;mBAC3B,CAAA;QAAC,OAAO,GAAM,SAAS;IAAA,CAAA;;uBAEvB,CAAA;QAAC,OAAO,GAAM,SAAS;QAAE,KAAK;IAAW,CAAA;;AAX7C,SAAwB,SAAS,QAAQ,iBAAiB;AAC1D,OAAO,MAAM,sBAAQ,sCAAW,CAAC;IAChC,IAAI,YAAY,UAAU;IAC1B,qBACC,WAAC;QAAI;QAEH;kBACA;;;;;;;;QAGA;YAAC,OAAO;QAAS;;;;;QAC0B;;AAI/C,mCAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AACA,SAAwB,SAAS,QAAQ,iBAAiB;uBAQtD,KAAY,GAAM,SAAS;;mBAC3B,CAAA;QAAC,OAAO,GAAM,SAAS;IAAA,CAAA;;uBAEvB,CAAA;QAAC,OAAO,GAAM,SAAS;QAAE,KAAK;IAAW,CAAA;;oCAVb,CAAC;IAChC,IAAI,YAAY,UAAU;IAC1B,qBACC,WAAC;QAAI;QAEH;kBACA;;;;;;;;QAGA;YAAC,OAAO;QAAS;;;;;QAC0B;;AAI/C;AAdA,OAAO,MAAM,sBAAQ,mGAclB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_conflict.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_conflict.snap index ae90e01701d..a83dc6b50d5 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_conflict.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_conflict.snap @@ -42,35 +42,35 @@ export const Root = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_HTDRsvUbLiE = ()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"); -const i_royhjYaCbYE = ()=>import("./test.tsx_Root_component_royhjYaCbYE"); import { qrl as qrl1 } from '@qwik.dev/core/what'; +const _qrl_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE"); +const _qrl_Root_component_royhjYaCbYE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Root_component_royhjYaCbYE"), "Root_component_royhjYaCbYE"); export const hW = 12; export const handleWatch = 42; const componentQrl1 = ()=>console.log('not this', qrl1()); componentQrl1(); -export const Foo = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_HTDRsvUbLiE, "Foo_component_HTDRsvUbLiE"), { +export const Foo = /*#__PURE__*/ componentQrl(_qrl_Foo_component_HTDRsvUbLiE, { tagName: "my-foo" }); -export const Root = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_royhjYaCbYE, "Root_component_royhjYaCbYE"), { +export const Root = /*#__PURE__*/ componentQrl(_qrl_Root_component_royhjYaCbYE, { tagName: "my-foo" }); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAEA,SAAS,OAAA,IAAG,QAAQ,sBAAsB;AAE1C,OAAO,MAAM,KAAK,GAAG;AACrB,OAAO,MAAM,cAAc,GAAG;AAE9B,MAAM,gBAAe,IAAM,QAAQ,GAAG,CAAC,YAAY;AAEnD;AACA,OAAO,MAAM,oBAAM,4EAQhB;IACF,SAAS;AACV,GAAG;AAEH,OAAO,MAAM,qBAAO,6EAOjB;IACF,SAAS;AACV,GAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AAEA,SAAS,OAAA,IAAG,QAAQ,sBAAsB;;;AAE1C,OAAO,MAAM,KAAK,GAAG;AACrB,OAAO,MAAM,cAAc,GAAG;AAE9B,MAAM,gBAAe,IAAM,QAAQ,GAAG,CAAC,YAAY;AAEnD;AACA,OAAO,MAAM,oBAAM,6CAQhB;IACF,SAAS;AACV,GAAG;AAEH,OAAO,MAAM,qBAAO,8CAOjB;IACF,SAAS;AACV,GAAG\"}") ============================= test.tsx_Foo_component_HTDRsvUbLiE.js (ENTRY POINT)== -import { _jsxSorted } from "@qwik.dev/core"; import { hW } from "./test"; import { handleWatch } from "./test"; +import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_YEa2A5ADUOg = ()=>import("./test.tsx_Foo_component_div_q_e_click_YEa2A5ADUOg"); +const _qrl_Foo_component_div_q_e_click_YEa2A5ADUOg = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_q_e_click_YEa2A5ADUOg"), "Foo_component_div_q_e_click_YEa2A5ADUOg"); export const Foo_component_HTDRsvUbLiE = ()=>{ useStyles$('thing'); const qwik = hW + handleWatch; console.log(qwik); return /*#__PURE__*/ _jsxSorted("div", null, { - "q-e:click": /*#__PURE__*/ qrl(i_YEa2A5ADUOg, "Foo_component_div_q_e_click_YEa2A5ADUOg") + "q-e:click": _qrl_Foo_component_div_q_e_click_YEa2A5ADUOg }, null, 3, "u6_0"); }; @@ -126,11 +126,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { qrl } from "@qwik.dev/core"; import { useStyles } from "@qwik.dev/core"; -const i_cBpQNYDUHI4 = ()=>import("./test.tsx_Root_component_1_cBpQNYDUHI4"); -const i_u5DkUxGrGnU = ()=>import("./test.tsx_Root_component_useStyles_u5DkUxGrGnU"); +const _qrl_Root_component_1_cBpQNYDUHI4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Root_component_1_cBpQNYDUHI4"), "Root_component_1_cBpQNYDUHI4"); +const _qrl_Root_component_useStyles_u5DkUxGrGnU = /*#__PURE__*/ qrl(()=>import("./test.tsx_Root_component_useStyles_u5DkUxGrGnU"), "Root_component_useStyles_u5DkUxGrGnU"); export const Root_component_royhjYaCbYE = ()=>{ - useStyles(/*#__PURE__*/ qrl(i_u5DkUxGrGnU, "Root_component_useStyles_u5DkUxGrGnU")); - return /*#__PURE__*/ qrl(i_cBpQNYDUHI4, "Root_component_1_cBpQNYDUHI4"); + useStyles(_qrl_Root_component_useStyles_u5DkUxGrGnU); + return _qrl_Root_component_1_cBpQNYDUHI4; }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_react.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_react.snap index 1461f5dd0c4..3e9bb8831aa 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_react.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_react.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3119 +assertion_line: 3120 expression: output -snapshot_kind: text --- ==INPUT== @@ -162,10 +161,10 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/react/inde */ ============================= ../node_modules/@qwik.dev/react/index.qwik.mjs_qwikifyQrl_component_zH94hIe0Ick.mjs (ENTRY POINT)== +import { _auto_filterProps as filterProps } from "./index.qwik.mjs"; import { Fragment } from "@qwik.dev/core/jsx-runtime"; import { SkipRerender } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; -import { _auto_filterProps as filterProps } from "./index.qwik.mjs"; import { isServer } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useHostElement } from "@qwik.dev/core"; @@ -237,8 +236,8 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/react/inde ============================= ../node_modules/@qwik.dev/react/index.qwik.mjs == import { qrl } from "@qwik.dev/core"; -const i_zH94hIe0Ick = ()=>import("./index.qwik.mjs_qwikifyQrl_component_zH94hIe0Ick.mjs"); import { componentQrl, implicit$FirstArg } from '@qwik.dev/core'; +const i_zH94hIe0Ick = ()=>import("./index.qwik.mjs_qwikifyQrl_component_zH94hIe0Ick.mjs"); function qwikifyQrl(reactCmpQrl) { return /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_zH94hIe0Ick, "qwikifyQrl_component_zH94hIe0Ick", [ reactCmpQrl @@ -268,7 +267,7 @@ export { qwikify$, qwikifyQrl, renderToString }; export { filterProps as _auto_filterProps }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/react/index.qwik.mjs\"],\"names\":[],\"mappings\":\";;AACA,SAAS,YAAY,EAAgG,iBAAiB,QAAQ,iBAAiB;AAI/J,SAAS,WAAW,WAAW;IAC9B,OAAO,WAAW,GAAG;;QA4DjB;QACH,SAAS;IACV;AACD;AACA,MAAM,cAAc,CAAC;IACpB,MAAM,MAAM,CAAC;IACb,OAAO,IAAI,CAAC,OAAO,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,UAAU,CAAC,YAAY,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;IACtD;IACA,OAAO;AACR;AACA,MAAM,WAAW,kBAAkB;AAEnC,eAAe,eAAe,QAAQ,EAAE,IAAI;IAC3C,MAAM,MAAM,MAAM,MAAM,CAAC;IACzB,MAAM,SAAS,MAAM,IAAI,cAAc,CAAC,UAAU;IAClD,MAAM,SAAS,IAAI,iBAAiB,CAAC,OAAO,IAAI;IAChD,MAAM,YAAY,SAAS,OAAO,IAAI;IACtC,OAAO;QACN,GAAG,MAAM;QACT,MAAM;IACP;AACD;AAEA,SAAS,QAAQ,EAAE,UAAU,EAAE,cAAc,GAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/react/index.qwik.mjs\"],\"names\":[],\"mappings\":\";AACA,SAAS,YAAY,EAAgG,iBAAiB,QAAQ,iBAAiB;;AAI/J,SAAS,WAAW,WAAW;IAC9B,OAAO,WAAW,GAAG;;QA4DjB;QACH,SAAS;IACV;AACD;AACA,MAAM,cAAc,CAAC;IACpB,MAAM,MAAM,CAAC;IACb,OAAO,IAAI,CAAC,OAAO,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,UAAU,CAAC,YAAY,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;IACtD;IACA,OAAO;AACR;AACA,MAAM,WAAW,kBAAkB;AAEnC,eAAe,eAAe,QAAQ,EAAE,IAAI;IAC3C,MAAM,MAAM,MAAM,MAAM,CAAC;IACzB,MAAM,SAAS,MAAM,IAAI,cAAc,CAAC,UAAU;IAClD,MAAM,SAAS,IAAI,iBAAiB,CAAC,OAAO,IAAI;IAChD,MAAM,YAAY,SAAS,OAAO,IAAI;IACtC,OAAO;QACN,GAAG,MAAM;QACT,MAAM;IACP;AACD;AAEA,SAAS,QAAQ,EAAE,UAAU,EAAE,cAAc,GAAG\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_react_inline.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_react_inline.snap index 26326d87921..68a5cfa2874 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_react_inline.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_react_inline.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3222 +assertion_line: 3223 expression: output -snapshot_kind: text --- ==INPUT== @@ -104,74 +103,76 @@ import { _jsxSorted } from "@qwik.dev/core"; import { componentQrl, inlinedQrl, useLexicalScope, useHostElement, useStore, useTaskQrl, noSerialize, SkipRerender, implicit$FirstArg } from '@qwik.dev/core'; import { Fragment } from '@qwik.dev/core/jsx-runtime'; import { isBrowser, isServer } from '@qwik.dev/core'; -function qwikifyQrl(reactCmpQrl) { - return /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((props)=>{ - const [reactCmpQrl] = useLexicalScope(); - const hostElement = useHostElement(); - const store = useStore({}); - let run; - if (props['client:visible']) run = 'visible'; - else if (props['client:load'] || props['client:only']) run = 'load'; - useTaskQrl(/*#__PURE__*/ inlinedQrl(async (track)=>{ - const [hostElement, props, reactCmpQrl, store] = useLexicalScope(); - track(props); - if (isBrowser) { - if (store.data) store.data.root.render(store.data.client.Main(store.data.cmp, filterProps(props))); - else { - const [Cmp, client] = await Promise.all([ - reactCmpQrl.resolve(), - import('./client-f762f78c.js') - ]); - let root; - if (hostElement.childElementCount > 0) root = client.hydrateRoot(hostElement, client.Main(Cmp, filterProps(props), store.event)); - else { - root = client.createRoot(hostElement); - root.render(client.Main(Cmp, filterProps(props))); - } - store.data = noSerialize({ - client, - cmp: Cmp, - root - }); - } - } - }, "qwikifyQrl_component_useWatch_x04JC5xeP1U", [ - hostElement, - props, - reactCmpQrl, - store - ]), { - run - }); - if (isServer && !props['client:only']) { - const jsx$1 = Promise.all([ +const filterProps = (props)=>{ + const obj = {}; + Object.keys(props).forEach((key)=>{ + if (!key.startsWith('client:')) obj[key] = props[key]; + }); + return obj; +}; +const qwikifyQrl_component_useWatch_x04JC5xeP1U = async (track)=>{ + const [hostElement, props, reactCmpQrl, store] = useLexicalScope(); + track(props); + if (isBrowser) { + if (store.data) store.data.root.render(store.data.client.Main(store.data.cmp, filterProps(props))); + else { + const [Cmp, client] = await Promise.all([ reactCmpQrl.resolve(), - import('./server-9ac6caad.js') - ]).then(([Cmp, server])=>{ - const html = server.render(Cmp, filterProps(props)); - return /*#__PURE__*/ _jsxSorted(Host, { - dangerouslySetInnerHTML: html, - [_IMMUTABLE]: [ - "dangerouslySetInnerHTML" - ] - }, null, null, 3, "8p_0"); + import('./client-f762f78c.js') + ]); + let root; + if (hostElement.childElementCount > 0) root = client.hydrateRoot(hostElement, client.Main(Cmp, filterProps(props), store.event)); + else { + root = client.createRoot(hostElement); + root.render(client.Main(Cmp, filterProps(props))); + } + store.data = noSerialize({ + client, + cmp: Cmp, + root }); - return /*#__PURE__*/ _jsxSorted(Fragment, null, null, jsx$1, 1, "8p_1"); } - return /*#__PURE__*/ _jsxSorted(Host, null, null, /*#__PURE__*/ _jsxSorted(SkipRerender, null, null, null, 3, "8p_2"), 1, "8p_3"); - }, "qwikifyQrl_component_zH94hIe0Ick", [ + } +}; +const qwikifyQrl_component_zH94hIe0Ick = (props)=>{ + const [reactCmpQrl] = useLexicalScope(); + const hostElement = useHostElement(); + const store = useStore({}); + let run; + if (props['client:visible']) run = 'visible'; + else if (props['client:load'] || props['client:only']) run = 'load'; + useTaskQrl(/*#__PURE__*/ inlinedQrl(qwikifyQrl_component_useWatch_x04JC5xeP1U, "qwikifyQrl_component_useWatch_x04JC5xeP1U", [ + hostElement, + props, + reactCmpQrl, + store + ]), { + run + }); + if (isServer && !props['client:only']) { + const jsx$1 = Promise.all([ + reactCmpQrl.resolve(), + import('./server-9ac6caad.js') + ]).then(([Cmp, server])=>{ + const html = server.render(Cmp, filterProps(props)); + return /*#__PURE__*/ _jsxSorted(Host, { + dangerouslySetInnerHTML: html, + [_IMMUTABLE]: [ + "dangerouslySetInnerHTML" + ] + }, null, null, 3, "8p_0"); + }); + return /*#__PURE__*/ _jsxSorted(Fragment, null, null, jsx$1, 1, "8p_1"); + } + return /*#__PURE__*/ _jsxSorted(Host, null, null, /*#__PURE__*/ _jsxSorted(SkipRerender, null, null, null, 3, "8p_2"), 1, "8p_3"); +}; +function qwikifyQrl(reactCmpQrl) { + return /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(qwikifyQrl_component_zH94hIe0Ick, "qwikifyQrl_component_zH94hIe0Ick", [ reactCmpQrl ]), { tagName: 'qwik-wrap' }); } -const filterProps = (props)=>{ - const obj = {}; - Object.keys(props).forEach((key)=>{ - if (!key.startsWith('client:')) obj[key] = props[key]; - }); - return obj; -}; const qwikify$ = implicit$FirstArg(qwikifyQrl); async function renderToString(rootNode, opts) { const mod = await import('./server-9ac6caad.js'); @@ -187,7 +188,7 @@ export { qwikify$, qwikifyQrl, renderToString }; export { filterProps as _auto_filterProps }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/react/index.qwik.mjs\"],\"names\":[],\"mappings\":\";AACA,SAAS,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,QAAQ,iBAAiB;AAC/J,SAAc,QAAQ,QAAQ,6BAA6B;AAC3D,SAAS,SAAS,EAAE,QAAQ,QAAQ,iBAAiB;AAErD,SAAS,WAAW,WAAW;IAC9B,OAAO,WAAW,GAAG,sCAAwB,CAAC;QAC7C,MAAM,CAAC,YAAY,GAAG;QACtB,MAAM,cAAc;QACpB,MAAM,QAAQ,SAAS,CAAC;QACxB,IAAI;QACJ,IAAI,KAAK,CAAC,iBAAiB,EAAE,MAAM;aAC9B,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,EAAE,MAAM;QAC7D,oCAAsB,OAAO;YAC5B,MAAM,CAAC,aAAa,OAAO,aAAa,MAAM,GAAG;YACjD,MAAM;YACN,IAAI;gBACH,IAAI,MAAM,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY;qBACrF;oBACJ,MAAM,CAAC,KAAK,OAAO,GAAG,MAAM,QAAQ,GAAG,CAAC;wBACvC,YAAY,OAAO;wBACnB,MAAM,CAAC;qBACP;oBACD,IAAI;oBACJ,IAAI,YAAY,iBAAiB,GAAG,GAAG,OAAO,OAAO,WAAW,CAAC,aAAa,OAAO,IAAI,CAAC,KAAK,YAAY,QAAQ,MAAM,KAAK;yBACzH;wBACJ,OAAO,OAAO,UAAU,CAAC;wBACzB,KAAK,MAAM,CAAC,OAAO,IAAI,CAAC,KAAK,YAAY;oBAC1C;oBACA,MAAM,IAAI,GAAG,YAAY;wBACxB;wBACA,KAAK;wBACL;oBACD;gBACD;;QAEF;;;;;YAKI;YACH;QACD;QACA,IAAI,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE;YACtC,MAAM,QAAQ,QAAQ,GAAG,CAAC;gBACzB,YAAY,OAAO;gBACnB,MAAM,CAAC;aACP,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO;gBACrB,MAAM,OAAO,OAAO,MAAM,CAAC,KAAK,YAAY;gBAC5C,OAAO,WAAW,GAAG,WAAI;oBACxB,yBAAyB;oBACzB,CAAC,WAAW,EAAE;wBACb;qBACA;;YAEH;YACA,OAAO,WAAW,GAAG,WAAI,sBACd;QAEZ;QACA,OAAO,WAAW,GAAG,WAAI,kBACd,WAAW,GAAG,WAAI;IAE9B;;QAEI;QACH,SAAS;IACV;AACD;AACA,MAAM,cAAc,CAAC;IACpB,MAAM,MAAM,CAAC;IACb,OAAO,IAAI,CAAC,OAAO,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,UAAU,CAAC,YAAY,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;IACtD;IACA,OAAO;AACR;AACA,MAAM,WAAW,kBAAkB;AAEnC,eAAe,eAAe,QAAQ,EAAE,IAAI;IAC3C,MAAM,MAAM,MAAM,MAAM,CAAC;IACzB,MAAM,SAAS,MAAM,IAAI,cAAc,CAAC,UAAU;IAClD,MAAM,SAAS,IAAI,iBAAiB,CAAC,OAAO,IAAI;IAChD,MAAM,YAAY,SAAS,OAAO,IAAI;IACtC,OAAO;QACN,GAAG,MAAM;QACT,MAAM;IACP;AACD;AAEA,SAAS,QAAQ,EAAE,UAAU,EAAE,cAAc,GAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/react/index.qwik.mjs\"],\"names\":[],\"mappings\":\";AACA,SAAS,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,QAAQ,iBAAiB;AAC/J,SAAc,QAAQ,QAAQ,6BAA6B;AAC3D,SAAS,SAAS,EAAE,QAAQ,QAAQ,iBAAiB;AAmErD,MAAM,cAAc,CAAC;IACpB,MAAM,MAAM,CAAC;IACb,OAAO,IAAI,CAAC,OAAO,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,UAAU,CAAC,YAAY,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;IACtD;IACA,OAAO;AACR;kDA/DwB,OAAO;IAC5B,MAAM,CAAC,aAAa,OAAO,aAAa,MAAM,GAAG;IACjD,MAAM;IACN,IAAI;QACH,IAAI,MAAM,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,YAAY;aACrF;YACJ,MAAM,CAAC,KAAK,OAAO,GAAG,MAAM,QAAQ,GAAG,CAAC;gBACvC,YAAY,OAAO;gBACnB,MAAM,CAAC;aACP;YACD,IAAI;YACJ,IAAI,YAAY,iBAAiB,GAAG,GAAG,OAAO,OAAO,WAAW,CAAC,aAAa,OAAO,IAAI,CAAC,KAAK,YAAY,QAAQ,MAAM,KAAK;iBACzH;gBACJ,OAAO,OAAO,UAAU,CAAC;gBACzB,KAAK,MAAM,CAAC,OAAO,IAAI,CAAC,KAAK,YAAY;YAC1C;YACA,MAAM,IAAI,GAAG,YAAY;gBACxB;gBACA,KAAK;gBACL;YACD;QACD;;AAEF;yCA9B4C,CAAC;IAC7C,MAAM,CAAC,YAAY,GAAG;IACtB,MAAM,cAAc;IACpB,MAAM,QAAQ,SAAS,CAAC;IACxB,IAAI;IACJ,IAAI,KAAK,CAAC,iBAAiB,EAAE,MAAM;SAC9B,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,EAAE,MAAM;IAC7D;;;;;QA4BI;QACH;IACD;IACA,IAAI,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE;QACtC,MAAM,QAAQ,QAAQ,GAAG,CAAC;YACzB,YAAY,OAAO;YACnB,MAAM,CAAC;SACP,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO;YACrB,MAAM,OAAO,OAAO,MAAM,CAAC,KAAK,YAAY;YAC5C,OAAO,WAAW,GAAG,WAAI;gBACxB,yBAAyB;gBACzB,CAAC,WAAW,EAAE;oBACb;iBACA;;QAEH;QACA,OAAO,WAAW,GAAG,WAAI,sBACd;IAEZ;IACA,OAAO,WAAW,GAAG,WAAI,kBACd,WAAW,GAAG,WAAI;AAE9B;AA3DD,SAAS,WAAW,WAAW;IAC9B,OAAO,WAAW,GAAG;;QA4DjB;QACH,SAAS;IACV;AACD;AAQA,MAAM,WAAW,kBAAkB;AAEnC,eAAe,eAAe,QAAQ,EAAE,IAAI;IAC3C,MAAM,MAAM,MAAM,MAAM,CAAC;IACzB,MAAM,SAAS,MAAM,IAAI,cAAc,CAAC,UAAU;IAClD,MAAM,SAAS,IAAI,iBAAiB,CAAC,OAAO,IAAI;IAChD,MAAM,YAAY,SAAS,OAAO,IAAI;IACtC,OAAO;QACN,GAAG,MAAM;QACT,MAAM;IACP;AACD;AAEA,SAAS,QAAQ,EAAE,UAAU,EAAE,cAAc,GAAG\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_router_client.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_router_client.snap new file mode 100644 index 00000000000..c609c1dc4e4 --- /dev/null +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_router_client.snap @@ -0,0 +1,4183 @@ +--- +source: packages/qwik/src/optimizer/core/src/test.rs +assertion_line: 3338 +expression: output +--- +==INPUT== + +import { jsx, Fragment, jsxs } from '@qwik.dev/core/jsx-runtime'; +import { + component$, + useErrorBoundary, + useOnWindow, + $, + Slot, + createContextId, + useContext, + implicit$FirstArg, + noSerialize, + useVisibleTask$, + useServerData, + useSignal, + untrack, + sync$, + isDev, + withLocale, + event$, + isServer, + useStyles$, + useStore, + isBrowser, + useContextProvider, + useTask$, + getLocale, + jsx as jsx$1, + SkipRender, + createElement, +} from '@qwik.dev/core'; +import { + g as getClientNavPath, + s as shouldPreload, + p as preloadRouteBundles, + l as loadClientData, + i as isPromise, + a as isSamePath, + c as createLoaderSignal, + t as toUrl, + b as isSameOrigin, + d as loadRoute, + D as DEFAULT_LOADERS_SERIALIZATION_STRATEGY, + C as CLIENT_DATA_CACHE, + Q as Q_ROUTE, + e as clientNavigate, + f as QFN_KEY, + h as QACTION_KEY, + j as QDATA_KEY, +} from './chunks/routing.qwik.mjs'; +import * as qwikRouterConfig from '@qwik-router-config'; +import { + _getContextContainer, + SerializerSymbol, + _UNINITIALIZED, + _hasStoreEffects, + forceStoreEffects, + _waitUntilRendered, + _getContextHostElement, + _getContextEvent, + _serialize, + _deserialize, + _resolveContextWithoutSequentialScope, +} from '@qwik.dev/core/internal'; +import { _asyncRequestStore } from '@qwik.dev/router/middleware/request-handler'; +import * as v from 'valibot'; +import * as z from 'zod'; +export { z } from 'zod'; +import swRegister from '@qwik-router-sw-register'; +import { renderToStream } from '@qwik.dev/core/server'; +import '@qwik.dev/core/preloader'; +import './chunks/types.qwik.mjs'; + +const ErrorBoundary = component$((props) => { + const store = useErrorBoundary(); + useOnWindow( + 'qerror', + $((e) => { + store.error = e.detail.error; + }) + ); + if (store.error && props.fallback$) { + return /* @__PURE__ */ jsx(Fragment, { children: props.fallback$(store.error) }); + } + return /* @__PURE__ */ jsx(Slot, {}); +}); + +const RouteStateContext = /* @__PURE__ */ createContextId('qc-s'); +const ContentContext = /* @__PURE__ */ createContextId('qc-c'); +const ContentInternalContext = /* @__PURE__ */ createContextId('qc-ic'); +const DocumentHeadContext = /* @__PURE__ */ createContextId('qc-h'); +const RouteLocationContext = /* @__PURE__ */ createContextId('qc-l'); +const RouteNavigateContext = /* @__PURE__ */ createContextId('qc-n'); +const RouteActionContext = /* @__PURE__ */ createContextId('qc-a'); +const RoutePreventNavigateContext = /* @__PURE__ */ createContextId('qc-p'); + +const useContent = () => useContext(ContentContext); +const useDocumentHead = () => useContext(DocumentHeadContext); +const useLocation = () => useContext(RouteLocationContext); +const useNavigate = () => useContext(RouteNavigateContext); +const usePreventNavigateQrl = (fn) => { + if (!__EXPERIMENTAL__.preventNavigate) { + throw new Error( + 'usePreventNavigate$ is experimental and must be enabled with `experimental: ["preventNavigate"]` in the `qwikVite` plugin.' + ); + } + const registerPreventNav = useContext(RoutePreventNavigateContext); + useVisibleTask$(() => registerPreventNav(fn)); +}; +const usePreventNavigate$ = implicit$FirstArg(usePreventNavigateQrl); +const useAction = () => useContext(RouteActionContext); +const useQwikRouterEnv = () => noSerialize(useServerData('qwikrouter')); + +const Link = component$((props) => { + const nav = useNavigate(); + const loc = useLocation(); + const originalHref = props.href; + const anchorRef = useSignal(); + const { + onClick$, + prefetch: prefetchProp, + reload, + replaceState, + scroll, + ...linkProps + } = /* @__PURE__ */ (() => props)(); + const clientNavPath = untrack(getClientNavPath, { ...linkProps, reload }, loc); + linkProps.href = clientNavPath || originalHref; + const prefetchData = + (!!clientNavPath && prefetchProp !== false && prefetchProp !== 'js') || void 0; + const prefetch = + prefetchData || + (!!clientNavPath && prefetchProp !== false && untrack(shouldPreload, clientNavPath, loc)); + const handlePrefetch = prefetch + ? $((_, elm) => { + if (navigator.connection?.saveData) { + return; + } + if (elm && elm.href) { + const url = new URL(elm.href); + preloadRouteBundles(url.pathname); + if (elm.hasAttribute('data-prefetch')) { + loadClientData(url, { + preloadRouteBundles: false, + isPrefetch: true, + }); + } + } + }) + : void 0; + const preventDefault = clientNavPath + ? sync$((event) => { + if (!(event.metaKey || event.ctrlKey || event.shiftKey || event.altKey)) { + event.preventDefault(); + } + }) + : void 0; + const handleClientSideNavigation = clientNavPath + ? $((event, elm) => { + if (event.defaultPrevented) { + if (elm.href) { + elm.setAttribute('aria-pressed', 'true'); + nav(elm.href, { forceReload: reload, replaceState, scroll }).then(() => { + elm.removeAttribute('aria-pressed'); + }); + } + } + }) + : void 0; + const handlePreload = $((_, elm) => { + const url = new URL(elm.href); + preloadRouteBundles(url.pathname, 1); + }); + useVisibleTask$(({ track }) => { + track(() => loc.url.pathname); + const handler = linkProps.onQVisible$; + if (handler) { + const event = new CustomEvent('qvisible'); + if (Array.isArray(handler)) { + handler.flat(10).forEach((handler2) => handler2?.(event, anchorRef.value)); + } else { + handler?.(event, anchorRef.value); + } + } + if (!isDev && anchorRef.value) { + handlePrefetch?.(void 0, anchorRef.value); + } + }); + return /* @__PURE__ */ jsx('a', { + ref: anchorRef, + ...{ 'q:link': !!clientNavPath }, + ...linkProps, + onClick$: [ + preventDefault, + handlePreload, + // needs to be in between preventDefault and onClick$ to ensure it starts asap. + onClick$, + handleClientSideNavigation, + ], + 'data-prefetch': prefetchData, + onMouseOver$: [linkProps.onMouseOver$, handlePrefetch], + onFocus$: [linkProps.onFocus$, handlePrefetch], + onQVisible$: [], + children: /* @__PURE__ */ jsx(Slot, {}), + }); +}); + +const resolveHead = (endpoint, routeLocation, contentModules, locale, defaults) => + withLocale(locale, () => { + const head = createDocumentHead(defaults); + const getData = (loaderOrAction) => { + const id = loaderOrAction.__id; + if (loaderOrAction.__brand === 'server_loader') { + if (!(id in endpoint.loaders)) { + throw new Error( + 'You can not get the returned data of a loader that has not been executed for this request.' + ); + } + } + const data = endpoint.loaders[id]; + if (isPromise(data)) { + throw new Error('Loaders returning a promise can not be resolved for the head function.'); + } + return data; + }; + const fns = []; + for (const contentModule of contentModules) { + const contentModuleHead = contentModule?.head; + if (contentModuleHead) { + if (typeof contentModuleHead === 'function') { + fns.unshift(contentModuleHead); + } else if (typeof contentModuleHead === 'object') { + resolveDocumentHead(head, contentModuleHead); + } + } + } + if (fns.length) { + const headProps = { + head, + withLocale: (fn) => fn(), + resolveValue: getData, + ...routeLocation, + }; + for (const fn of fns) { + resolveDocumentHead(head, fn(headProps)); + } + } + return head; + }); +const resolveDocumentHead = (resolvedHead, updatedHead) => { + if (typeof updatedHead.title === 'string') { + resolvedHead.title = updatedHead.title; + } + mergeArray(resolvedHead.meta, updatedHead.meta); + mergeArray(resolvedHead.links, updatedHead.links); + mergeArray(resolvedHead.styles, updatedHead.styles); + mergeArray(resolvedHead.scripts, updatedHead.scripts); + Object.assign(resolvedHead.frontmatter, updatedHead.frontmatter); +}; +const mergeArray = (existingArr, newArr) => { + if (Array.isArray(newArr)) { + for (const newItem of newArr) { + if (typeof newItem.key === 'string') { + const existingIndex = existingArr.findIndex((i) => i.key === newItem.key); + if (existingIndex > -1) { + existingArr[existingIndex] = newItem; + continue; + } + } + existingArr.push(newItem); + } + } +}; +const createDocumentHead = (defaults) => ({ + title: defaults?.title || '', + meta: [...(defaults?.meta || [])], + links: [...(defaults?.links || [])], + styles: [...(defaults?.styles || [])], + scripts: [...(defaults?.scripts || [])], + frontmatter: { ...defaults?.frontmatter }, +}); + +const transitionCss = + '@layer qwik{@supports selector(html:active-view-transition-type(type)){html:active-view-transition-type(qwik-navigation){:root{view-transition-name:none}}}@supports not selector(html:active-view-transition-type(type)){:root{view-transition-name:none}}}'; + +function callRestoreScrollOnDocument() { + if (document.__q_scroll_restore__) { + document.__q_scroll_restore__(); + document.__q_scroll_restore__ = void 0; + } +} +const restoreScroll = (type, toUrl, fromUrl, scroller, scrollState) => { + if (type === 'popstate' && scrollState) { + scroller.scrollTo(scrollState.x, scrollState.y); + } else if (type === 'link' || type === 'form') { + if (!hashScroll(toUrl, fromUrl)) { + scroller.scrollTo(0, 0); + } + } +}; +const hashScroll = (toUrl, fromUrl) => { + const elmId = toUrl.hash.slice(1); + const elm = elmId && document.getElementById(elmId); + if (elm) { + elm.scrollIntoView(); + return true; + } else if (!elm && toUrl.hash && isSamePath(toUrl, fromUrl)) { + return true; + } + return false; +}; +const currentScrollState = (elm) => { + return { + x: elm.scrollLeft, + y: elm.scrollTop, + w: Math.max(elm.scrollWidth, elm.clientWidth), + h: Math.max(elm.scrollHeight, elm.clientHeight), + }; +}; +const getScrollHistory = () => { + const state = history.state; + return state?._qRouterScroll; +}; +const saveScrollHistory = (scrollState) => { + const state = history.state || {}; + state._qRouterScroll = scrollState; + history.replaceState(state, ''); +}; + +const spaInit = event$((_, el) => { + if (!window._qRouterSPA && !window._qRouterInitPopstate) { + const currentPath = location.pathname + location.search; + const checkAndScroll = (scrollState) => { + if (scrollState) { + window.scrollTo(scrollState.x, scrollState.y); + } + }; + const currentScrollState = () => { + const elm = document.documentElement; + return { + x: elm.scrollLeft, + y: elm.scrollTop, + w: Math.max(elm.scrollWidth, elm.clientWidth), + h: Math.max(elm.scrollHeight, elm.clientHeight), + }; + }; + const saveScrollState = (scrollState) => { + const state = history.state || {}; + state._qRouterScroll = scrollState || currentScrollState(); + history.replaceState(state, ''); + }; + saveScrollState(); + window._qRouterInitPopstate = () => { + if (window._qRouterSPA) { + return; + } + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + if (currentPath !== location.pathname + location.search) { + const getContainer = (el2) => + el2.closest('[q\\:container]:not([q\\:container=html]):not([q\\:container=text])'); + const container = getContainer(el); + const domContainer = container.qContainer; + const hostElement = domContainer.vNodeLocate(el); + const nav = domContainer?.resolveContext(hostElement, { + id: 'qc--n', + }); + if (nav) { + nav(location.href, { type: 'popstate' }); + } else { + location.reload(); + } + } else { + if (history.scrollRestoration === 'manual') { + const scrollState = history.state?._qRouterScroll; + checkAndScroll(scrollState); + window._qRouterScrollEnabled = true; + } + } + }; + if (!window._qRouterHistoryPatch) { + window._qRouterHistoryPatch = true; + const pushState = history.pushState; + const replaceState = history.replaceState; + const prepareState = (state) => { + if (state === null || typeof state === 'undefined') { + state = {}; + } else if (state?.constructor !== Object) { + state = { _data: state }; + if (isDev) { + console.warn( + 'In a Qwik SPA context, `history.state` is used to store scroll state. Direct calls to `pushState()` and `replaceState()` must supply an actual Object type. We need to be able to automatically attach the scroll state to your state object. A new state object has been created, your data has been moved to: `history.state._data`' + ); + } + } + state._qRouterScroll = state._qRouterScroll || currentScrollState(); + return state; + }; + history.pushState = (state, title, url) => { + state = prepareState(state); + return pushState.call(history, state, title, url); + }; + history.replaceState = (state, title, url) => { + state = prepareState(state); + return replaceState.call(history, state, title, url); + }; + } + window._qRouterInitAnchors = (event) => { + if (window._qRouterSPA || event.defaultPrevented) { + return; + } + const target = event.target.closest('a[href]'); + if (target && !target.hasAttribute('preventdefault:click')) { + const href = target.getAttribute('href'); + const prev = new URL(location.href); + const dest = new URL(href, prev); + const sameOrigin = dest.origin === prev.origin; + const samePath = dest.pathname + dest.search === prev.pathname + prev.search; + if (sameOrigin && samePath) { + event.preventDefault(); + if (dest.href !== prev.href) { + history.pushState(null, '', dest); + } + if (!dest.hash) { + if (dest.href.endsWith('#')) { + window.scrollTo(0, 0); + } else { + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + saveScrollState({ ...currentScrollState(), x: 0, y: 0 }); + location.reload(); + } + } else { + const elmId = dest.hash.slice(1); + const elm = document.getElementById(elmId); + if (elm) { + elm.scrollIntoView(); + } + } + } + } + }; + window._qRouterInitVisibility = () => { + if ( + !window._qRouterSPA && + window._qRouterScrollEnabled && + document.visibilityState === 'hidden' + ) { + saveScrollState(); + } + }; + window._qRouterInitScroll = () => { + if (window._qRouterSPA || !window._qRouterScrollEnabled) { + return; + } + clearTimeout(window._qRouterScrollDebounce); + window._qRouterScrollDebounce = setTimeout(() => { + saveScrollState(); + window._qRouterScrollDebounce = void 0; + }, 200); + }; + window._qRouterScrollEnabled = true; + setTimeout(() => { + window.addEventListener('popstate', window._qRouterInitPopstate); + window.addEventListener('scroll', window._qRouterInitScroll, { passive: true }); + document.addEventListener('click', window._qRouterInitAnchors); + if (!window.navigation) { + document.addEventListener('visibilitychange', window._qRouterInitVisibility, { + passive: true, + }); + } + }, 0); + } +}); + +const startViewTransition = (params) => { + if (!params.update) { + return; + } + if ('startViewTransition' in document) { + let transition; + try { + transition = document.startViewTransition(params); + } catch { + transition = document.startViewTransition(params.update); + } + const event = new CustomEvent('qviewtransition', { detail: transition }); + document.dispatchEvent(event); + return transition; + } else { + params.update?.(); + } +}; + +const QWIK_CITY_SCROLLER = '_qCityScroller'; +const QWIK_ROUTER_SCROLLER = '_qRouterScroller'; +const preventNav = {}; +const internalState = { navCount: 0 }; +const useQwikRouter = (props) => { + if (!isServer) { + throw new Error( + 'useQwikRouter can only run during SSR on the server. If you are seeing this, it means you are re-rendering the root of your application. Fix that or use the component around the root of your application.' + ); + } + useStyles$(transitionCss); + const env = useQwikRouterEnv(); + if (!env?.params) { + throw new Error( + `Missing Qwik Router Env Data for help visit https://github.com/QwikDev/qwik/issues/6237` + ); + } + const urlEnv = useServerData('url'); + if (!urlEnv) { + throw new Error(`Missing Qwik URL Env Data`); + } + const serverHead = useServerData('documentHead'); + if ( + env.ev.originalUrl.pathname !== env.ev.url.pathname && + !__EXPERIMENTAL__.enableRequestRewrite + ) { + throw new Error( + `enableRequestRewrite is an experimental feature and is not enabled. Please enable the feature flag by adding \`experimental: ["enableRequestRewrite"]\` to your qwikVite plugin options.` + ); + } + const url = new URL(urlEnv); + const routeLocationTarget = { + url, + params: env.params, + isNavigating: false, + prevUrl: void 0, + }; + const routeLocation = useStore(routeLocationTarget, { deep: false }); + const navResolver = {}; + const container = _getContextContainer(); + const getSerializationStrategy = (loaderId) => { + return ( + env.response.loadersSerializationStrategy.get(loaderId) || + DEFAULT_LOADERS_SERIALIZATION_STRATEGY + ); + }; + const loadersObject = {}; + const loaderState = {}; + for (const [key, value] of Object.entries(env.response.loaders)) { + loadersObject[key] = value; + loaderState[key] = createLoaderSignal( + loadersObject, + key, + url, + getSerializationStrategy(key), + container + ); + } + loadersObject[SerializerSymbol] = (obj) => { + const loadersSerializationObject = {}; + for (const [k, v] of Object.entries(obj)) { + loadersSerializationObject[k] = getSerializationStrategy(k) === 'always' ? v : _UNINITIALIZED; + } + return loadersSerializationObject; + }; + const routeInternal = useSignal({ + type: 'initial', + dest: url, + scroll: true, + }); + const documentHead = useStore(() => createDocumentHead(serverHead)); + const content = useStore({ + headings: void 0, + menu: void 0, + }); + const contentInternal = useSignal(); + const currentActionId = env.response.action; + const currentAction = currentActionId ? env.response.loaders[currentActionId] : void 0; + const actionState = useSignal( + currentAction + ? { + id: currentActionId, + data: env.response.formData, + output: { + result: currentAction, + status: env.response.status, + }, + } + : void 0 + ); + const registerPreventNav = $((fn$) => { + if (!isBrowser) { + return; + } + preventNav.$handler$ ||= (event) => { + internalState.navCount++; + if (!preventNav.$cbs$) { + return; + } + const prevents = [...preventNav.$cbs$.values()].map((cb) => + cb.resolved ? cb.resolved() : cb() + ); + if (prevents.some(Boolean)) { + event.preventDefault(); + event.returnValue = true; + } + }; + (preventNav.$cbs$ ||= /* @__PURE__ */ new Set()).add(fn$); + fn$.resolve(); + window.addEventListener('beforeunload', preventNav.$handler$); + return () => { + if (preventNav.$cbs$) { + preventNav.$cbs$.delete(fn$); + if (!preventNav.$cbs$.size) { + preventNav.$cbs$ = void 0; + window.removeEventListener('beforeunload', preventNav.$handler$); + } + } + }; + }); + const goto = $(async (path, opt) => { + const { + type = 'link', + forceReload = path === void 0, + // Hack for nav() because this API is already set. + replaceState = false, + scroll = true, + } = typeof opt === 'object' ? opt : { forceReload: opt }; + internalState.navCount++; + if (isBrowser && type === 'link' && routeInternal.value.type === 'initial') { + const url2 = new URL(window.location.href); + routeInternal.value.dest = url2; + routeLocation.url = url2; + } + const lastDest = routeInternal.value.dest; + const dest = + path === void 0 ? lastDest : typeof path === 'number' ? path : toUrl(path, routeLocation.url); + if ( + preventNav.$cbs$ && + (forceReload || + typeof dest === 'number' || + !isSamePath(dest, lastDest) || + !isSameOrigin(dest, lastDest)) + ) { + const ourNavId = internalState.navCount; + const prevents = await Promise.all([...preventNav.$cbs$.values()].map((cb) => cb(dest))); + if (ourNavId !== internalState.navCount || prevents.some(Boolean)) { + if (ourNavId === internalState.navCount && type === 'popstate') { + history.pushState(null, '', lastDest); + } + return; + } + } + if (typeof dest === 'number') { + if (isBrowser) { + history.go(dest); + } + return; + } + if (!isSameOrigin(dest, lastDest)) { + if (isBrowser) { + location.href = dest.href; + } + return; + } + if (!forceReload && isSamePath(dest, lastDest)) { + if (isBrowser) { + if (type === 'link' && dest.href !== location.href) { + history.pushState(null, '', dest); + } + let scroller = document.getElementById(QWIK_ROUTER_SCROLLER); + if (!scroller) { + scroller = document.getElementById(QWIK_CITY_SCROLLER); + if (scroller && isDev) { + console.warn( + `Please update your scroller ID to "${QWIK_ROUTER_SCROLLER}" as "${QWIK_CITY_SCROLLER}" is deprecated and will be removed in V3` + ); + } + } + if (!scroller) { + scroller = document.documentElement; + } + restoreScroll(type, dest, new URL(location.href), scroller, getScrollHistory()); + if (type === 'popstate') { + window._qRouterScrollEnabled = true; + } + } + return; + } + routeInternal.value = { + type, + dest, + forceReload, + replaceState, + scroll, + }; + if (isBrowser) { + loadClientData(dest); + loadRoute( + qwikRouterConfig.routes, + qwikRouterConfig.menus, + qwikRouterConfig.cacheModules, + dest.pathname + ); + } + actionState.value = void 0; + routeLocation.isNavigating = true; + return new Promise((resolve) => { + navResolver.r = resolve; + }); + }); + useContextProvider(ContentContext, content); + useContextProvider(ContentInternalContext, contentInternal); + useContextProvider(DocumentHeadContext, documentHead); + useContextProvider(RouteLocationContext, routeLocation); + useContextProvider(RouteNavigateContext, goto); + useContextProvider(RouteStateContext, loaderState); + useContextProvider(RouteActionContext, actionState); + useContextProvider(RoutePreventNavigateContext, registerPreventNav); + useTask$(({ track }) => { + async function run() { + const navigation = track(routeInternal); + const action = track(actionState); + const locale = getLocale(''); + const prevUrl = routeLocation.url; + const navType = action ? 'form' : navigation.type; + const replaceState = navigation.replaceState; + let trackUrl; + let clientPageData; + let loadedRoute = null; + let container2; + if (isServer) { + trackUrl = new URL(navigation.dest, routeLocation.url); + loadedRoute = env.loadedRoute; + clientPageData = env.response; + } else { + trackUrl = new URL(navigation.dest, location); + if (trackUrl.pathname.endsWith('/')) { + if (globalThis.__NO_TRAILING_SLASH__) { + trackUrl.pathname = trackUrl.pathname.slice(0, -1); + } + } else if (!globalThis.__NO_TRAILING_SLASH__) { + trackUrl.pathname += '/'; + } + let loadRoutePromise = loadRoute( + qwikRouterConfig.routes, + qwikRouterConfig.menus, + qwikRouterConfig.cacheModules, + trackUrl.pathname + ); + container2 = _getContextContainer(); + const pageData = (clientPageData = await loadClientData(trackUrl, { + action, + clearCache: true, + })); + if (!pageData) { + routeInternal.untrackedValue = { type: navType, dest: trackUrl }; + return; + } + const newHref = pageData.href; + const newURL = new URL(newHref, trackUrl); + if (!isSamePath(newURL, trackUrl)) { + if (!pageData.isRewrite) { + trackUrl = newURL; + } + loadRoutePromise = loadRoute( + qwikRouterConfig.routes, + qwikRouterConfig.menus, + qwikRouterConfig.cacheModules, + newURL.pathname + // Load the actual required path. + ); + } + try { + loadedRoute = await loadRoutePromise; + } catch (e) { + console.error(e); + window.location.href = newHref; + return; + } + } + if (loadedRoute) { + const [routeName, params, mods, menu] = loadedRoute; + const contentModules = mods; + const pageModule = contentModules[contentModules.length - 1]; + if (navigation.dest.search && !!isSamePath(trackUrl, prevUrl)) { + trackUrl.search = navigation.dest.search; + } + let shouldForcePrevUrl = false; + let shouldForceUrl = false; + let shouldForceParams = false; + if (!isSamePath(trackUrl, prevUrl)) { + if (_hasStoreEffects(routeLocation, 'prevUrl')) { + shouldForcePrevUrl = true; + } + routeLocationTarget.prevUrl = prevUrl; + } + if (routeLocationTarget.url !== trackUrl) { + if (_hasStoreEffects(routeLocation, 'url')) { + shouldForceUrl = true; + } + routeLocationTarget.url = trackUrl; + } + if (routeLocationTarget.params !== params) { + if (_hasStoreEffects(routeLocation, 'params')) { + shouldForceParams = true; + } + routeLocationTarget.params = params; + } + routeInternal.untrackedValue = { type: navType, dest: trackUrl }; + const resolvedHead = resolveHead( + clientPageData, + routeLocation, + contentModules, + locale, + serverHead + ); + content.headings = pageModule.headings; + content.menu = menu; + contentInternal.untrackedValue = noSerialize(contentModules); + documentHead.links = resolvedHead.links; + documentHead.meta = resolvedHead.meta; + documentHead.styles = resolvedHead.styles; + documentHead.scripts = resolvedHead.scripts; + documentHead.title = resolvedHead.title; + documentHead.frontmatter = resolvedHead.frontmatter; + if (isBrowser) { + let scrollState; + if (navType === 'popstate') { + scrollState = getScrollHistory(); + } + const scroller = + document.getElementById(QWIK_ROUTER_SCROLLER) ?? document.documentElement; + if ( + (navigation.scroll && + (!navigation.forceReload || !isSamePath(trackUrl, prevUrl)) && + (navType === 'link' || navType === 'popstate')) || // Action might have responded with a redirect. + (navType === 'form' && !isSamePath(trackUrl, prevUrl)) + ) { + document.__q_scroll_restore__ = () => + restoreScroll(navType, trackUrl, prevUrl, scroller, scrollState); + } + const loaders = clientPageData?.loaders; + if (loaders) { + const container3 = _getContextContainer(); + for (const [key, value] of Object.entries(loaders)) { + const signal = loaderState[key]; + const awaitedValue = await value; + loadersObject[key] = awaitedValue; + if (!signal) { + loaderState[key] = createLoaderSignal( + loadersObject, + key, + trackUrl, + DEFAULT_LOADERS_SERIALIZATION_STRATEGY, + container3 + ); + } else { + signal.invalidate(); + } + } + } + CLIENT_DATA_CACHE.clear(); + if (!window._qRouterSPA) { + window._qRouterSPA = true; + history.scrollRestoration = 'manual'; + window.addEventListener('popstate', () => { + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + goto(location.href, { + type: 'popstate', + }); + }); + window.removeEventListener('popstate', window._qRouterInitPopstate); + window._qRouterInitPopstate = void 0; + if (!window._qRouterHistoryPatch) { + window._qRouterHistoryPatch = true; + const pushState = history.pushState; + const replaceState2 = history.replaceState; + const prepareState = (state) => { + if (state === null || typeof state === 'undefined') { + state = {}; + } else if (state?.constructor !== Object) { + state = { _data: state }; + if (isDev) { + console.warn( + 'In a Qwik SPA context, `history.state` is used to store scroll state. Direct calls to `pushState()` and `replaceState()` must supply an actual Object type. We need to be able to automatically attach the scroll state to your state object. A new state object has been created, your data has been moved to: `history.state._data`' + ); + } + } + state._qRouterScroll = state._qRouterScroll || currentScrollState(scroller); + return state; + }; + history.pushState = (state, title, url2) => { + state = prepareState(state); + return pushState.call(history, state, title, url2); + }; + history.replaceState = (state, title, url2) => { + state = prepareState(state); + return replaceState2.call(history, state, title, url2); + }; + } + document.addEventListener('click', (event) => { + if (event.defaultPrevented) { + return; + } + const target = event.target.closest('a[href]'); + if (target && !target.hasAttribute('preventdefault:click')) { + const href = target.getAttribute('href'); + const prev = new URL(location.href); + const dest = new URL(href, prev); + if (isSameOrigin(dest, prev) && isSamePath(dest, prev)) { + event.preventDefault(); + if (!dest.hash && !dest.href.endsWith('#')) { + if (dest.href !== prev.href) { + history.pushState(null, '', dest); + } + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + saveScrollHistory({ + ...currentScrollState(scroller), + x: 0, + y: 0, + }); + location.reload(); + return; + } + goto(target.getAttribute('href')); + } + } + }); + document.removeEventListener('click', window._qRouterInitAnchors); + window._qRouterInitAnchors = void 0; + if (!window.navigation) { + document.addEventListener( + 'visibilitychange', + () => { + if ( + (window._qRouterScrollEnabled || window._qCityScrollEnabled) && + document.visibilityState === 'hidden' + ) { + if (window._qCityScrollEnabled) { + console.warn( + '"_qCityScrollEnabled" is deprecated. Use "_qRouterScrollEnabled" instead.' + ); + } + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + } + }, + { passive: true } + ); + document.removeEventListener('visibilitychange', window._qRouterInitVisibility); + window._qRouterInitVisibility = void 0; + } + window.addEventListener( + 'scroll', + () => { + if (!window._qRouterScrollEnabled && !window._qCityScrollEnabled) { + return; + } + clearTimeout(window._qRouterScrollDebounce); + window._qRouterScrollDebounce = setTimeout(() => { + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + window._qRouterScrollDebounce = void 0; + }, 200); + }, + { passive: true } + ); + removeEventListener('scroll', window._qRouterInitScroll); + window._qRouterInitScroll = void 0; + spaInit.resolve(); + } + if (navType !== 'popstate') { + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + } + const navigate = () => { + clientNavigate(window, navType, prevUrl, trackUrl, replaceState); + contentInternal.trigger(); + return _waitUntilRendered(container2); + }; + const _waitNextPage = () => { + if (isServer || props?.viewTransition === false) { + return navigate(); + } else { + const viewTransition = startViewTransition({ + update: navigate, + types: ['qwik-navigation'], + }); + if (!viewTransition) { + return Promise.resolve(); + } + return viewTransition.ready; + } + }; + _waitNextPage() + .catch((err) => { + navigate(); + throw err; + }) + .finally(() => { + container2.element.setAttribute?.(Q_ROUTE, routeName); + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + window._qRouterScrollEnabled = true; + if (isBrowser) { + callRestoreScrollOnDocument(); + } + if (shouldForcePrevUrl) { + forceStoreEffects(routeLocation, 'prevUrl'); + } + if (shouldForceUrl) { + forceStoreEffects(routeLocation, 'url'); + } + if (shouldForceParams) { + forceStoreEffects(routeLocation, 'params'); + } + routeLocation.isNavigating = false; + navResolver.r?.(); + }); + } + } + } + if (isServer) { + return run(); + } else { + run(); + } + }); +}; +const QwikRouterProvider = component$((props) => { + useQwikRouter(props); + return /* @__PURE__ */ jsx(Slot, {}); +}); +const QwikCityProvider = QwikRouterProvider; +const useQwikMockRouter = (props) => { + const urlEnv = props.url ?? 'http://localhost/'; + const url = new URL(urlEnv); + const routeLocation = useStore( + { + url, + params: props.params ?? {}, + isNavigating: false, + prevUrl: void 0, + }, + { deep: false } + ); + const loadersData = props.loaders?.reduce((acc, { loader, data }) => { + acc[loader.__id] = data; + return acc; + }, {}); + const loaderState = useStore(loadersData ?? {}, { deep: false }); + const goto = + props.goto ?? + $(async () => { + console.warn('QwikRouterMockProvider: goto not provided'); + }); + const documentHead = useStore(createDocumentHead, { deep: false }); + const content = useStore( + { + headings: void 0, + menu: void 0, + }, + { deep: false } + ); + const contentInternal = useSignal(); + const actionState = useSignal(); + useContextProvider(ContentContext, content); + useContextProvider(ContentInternalContext, contentInternal); + useContextProvider(DocumentHeadContext, documentHead); + useContextProvider(RouteLocationContext, routeLocation); + useContextProvider(RouteNavigateContext, goto); + useContextProvider(RouteStateContext, loaderState); + useContextProvider(RouteActionContext, actionState); + const actionsMocks = props.actions?.reduce((acc, { action, handler }) => { + acc[action.__id] = handler; + return acc; + }, {}); + useTask$(async ({ track }) => { + const action = track(actionState); + if (!action?.resolve) { + return; + } + const mock = actionsMocks?.[action.id]; + if (mock) { + const actionResult = await mock(action.data); + action.resolve(actionResult); + } + }); +}; +const QwikRouterMockProvider = component$((props) => { + useQwikMockRouter(props); + return /* @__PURE__ */ jsx(Slot, {}); +}); +const QwikCityMockProvider = QwikRouterMockProvider; + +const RouterOutlet = component$(() => { + const serverData = useServerData('containerAttributes'); + if (!serverData) { + throw new Error('PrefetchServiceWorker component must be rendered on the server.'); + } + const internalContext = useContext(ContentInternalContext); + const contents = internalContext.value; + if (contents && contents.length > 0) { + const contentsLen = contents.length; + let cmp = null; + for (let i = contentsLen - 1; i >= 0; i--) { + if (contents[i].default) { + cmp = jsx$1(contents[i].default, { + children: cmp, + }); + } + } + return /* @__PURE__ */ jsxs(Fragment, { + children: [ + cmp, + !__EXPERIMENTAL__.noSPA && + /* @__PURE__ */ jsx('script', { + 'document:onQCInit$': spaInit, + 'document:onQInit$': sync$(() => { + ((w, h) => { + if (!w._qcs && h.scrollRestoration === 'manual') { + w._qcs = true; + const s = h.state?._qRouterScroll; + if (s) { + w.scrollTo(s.x, s.y); + } + document.dispatchEvent(new Event('qcinit')); + } + })(window, history); + }), + }), + ], + }); + } + return SkipRender; +}); + +const routeActionQrl = (actionQrl, ...rest) => { + const { id, validators } = getValidators(rest, actionQrl); + function action() { + const loc = useLocation(); + const currentAction = useAction(); + const initialState = { + actionPath: `?${QACTION_KEY}=${id}`, + submitted: false, + isRunning: false, + status: void 0, + value: void 0, + formData: void 0, + }; + const state = useStore(() => { + const value = currentAction.value; + if (value && value?.id === id) { + const data = value.data; + if (data instanceof FormData) { + initialState.formData = data; + } + if (value.output) { + const { status, result } = value.output; + initialState.status = status; + initialState.value = result; + } + } + return initialState; + }); + const submit = $((input = {}) => { + if (isServer) { + throw new Error(`Actions can not be invoked within the server during SSR. +Action.run() can only be called on the browser, for example when a user clicks a button, or submits a form.`); + } + let data; + let form; + if (input instanceof SubmitEvent) { + form = input.target; + data = new FormData(form); + if ( + (input.submitter instanceof HTMLInputElement || + input.submitter instanceof HTMLButtonElement) && + input.submitter.name + ) { + if (input.submitter.name) { + data.append(input.submitter.name, input.submitter.value); + } + } + } else { + data = input; + } + return new Promise((resolve) => { + if (data instanceof FormData) { + state.formData = data; + } + state.submitted = true; + state.isRunning = true; + loc.isNavigating = true; + currentAction.value = { + data, + id, + resolve: noSerialize(resolve), + }; + }).then(({ result, status }) => { + state.isRunning = false; + state.status = status; + state.value = result; + if (form) { + if (form.getAttribute('data-spa-reset') === 'true') { + form.reset(); + } + const detail = { status, value: result }; + form.dispatchEvent( + new CustomEvent('submitcompleted', { + bubbles: false, + cancelable: false, + composed: false, + detail, + }) + ); + } + return { + status, + value: result, + }; + }); + }); + initialState.submit = submit; + return state; + } + action.__brand = 'server_action'; + action.__validators = validators; + action.__qrl = actionQrl; + action.__id = id; + Object.freeze(action); + return action; +}; +const globalActionQrl = (actionQrl, ...rest) => { + const action = routeActionQrl(actionQrl, ...rest); + if (isServer) { + if (typeof globalThis._qwikActionsMap === 'undefined') { + globalThis._qwikActionsMap = /* @__PURE__ */ new Map(); + } + globalThis._qwikActionsMap.set(action.__id, action); + } + return action; +}; +const routeAction$ = /* @__PURE__ */ implicit$FirstArg(routeActionQrl); +const globalAction$ = /* @__PURE__ */ implicit$FirstArg(globalActionQrl); +const getValue = (obj) => obj.value; +const routeLoaderQrl = (loaderQrl, ...rest) => { + const { id, validators, serializationStrategy } = getValidators(rest, loaderQrl); + function loader() { + const state = _resolveContextWithoutSequentialScope(RouteStateContext); + if (!(id in state)) { + throw new Error(`routeLoader$ "${loaderQrl.getSymbol()}" was invoked in a route where it was not declared. + This is because the routeLoader$ was not exported in a 'layout.tsx' or 'index.tsx' file of the existing route. + For more information check: https://qwik.dev/docs/route-loader/ + + If your are managing reusable logic or a library it is essential that this function is re-exported from within 'layout.tsx' or 'index.tsx file of the existing route otherwise it will not run or throw exception. + For more information check: https://qwik.dev/docs/re-exporting-loaders/`); + } + const loaderData = state[id]; + untrack(getValue, loaderData); + return loaderData; + } + loader.__brand = 'server_loader'; + loader.__qrl = loaderQrl; + loader.__validators = validators; + loader.__id = id; + loader.__serializationStrategy = serializationStrategy; + loader.__expires = -1; + Object.freeze(loader); + return loader; +}; +const routeLoader$ = /* @__PURE__ */ implicit$FirstArg(routeLoaderQrl); +const validatorQrl = (validator) => { + if (isServer) { + return { + validate: validator, + }; + } + return void 0; +}; +const validator$ = /* @__PURE__ */ implicit$FirstArg(validatorQrl); +const flattenValibotIssues = (issues) => { + return issues.reduce((acc, issue) => { + if (issue.path) { + const hasArrayType = issue.path.some((path) => path.type === 'array'); + if (hasArrayType) { + const keySuffix = issue.expected === 'Array' ? '[]' : ''; + const key = + issue.path + .map((item) => (item.type === 'array' ? '*' : item.key)) + .join('.') + .replace(/\.\*/g, '[]') + keySuffix; + acc[key] = acc[key] || []; + if (Array.isArray(acc[key])) { + acc[key].push(issue.message); + } + return acc; + } else { + acc[issue.path.map((item) => item.key).join('.')] = issue.message; + } + } + return acc; + }, {}); +}; +const valibotQrl = (qrl) => { + if (!__EXPERIMENTAL__.valibot) { + throw new Error( + 'Valibot is an experimental feature and is not enabled. Please enable the feature flag by adding `experimental: ["valibot"]` to your qwikVite plugin options.' + ); + } + if (isServer) { + return { + __brand: 'valibot', + async validate(ev, inputData) { + const schema = await qrl + .resolve() + .then((obj) => (typeof obj === 'function' ? obj(ev) : obj)); + const data = inputData ?? (await ev.parseBody()); + const result = await v.safeParseAsync(schema, data); + if (result.success) { + return { + success: true, + data: result.output, + }; + } else { + if (isDev) { + console.error('ERROR: Valibot validation failed', result.issues); + } + return { + success: false, + status: 400, + error: { + formErrors: v.flatten(result.issues).root ?? [], + fieldErrors: flattenValibotIssues(result.issues), + }, + }; + } + }, + }; + } + return void 0; +}; +const valibot$ = /* @__PURE__ */ implicit$FirstArg(valibotQrl); +const flattenZodIssues = (issues) => { + issues = Array.isArray(issues) ? issues : [issues]; + return issues.reduce((acc, issue) => { + const isExpectingArray = 'expected' in issue && issue.expected === 'array'; + const hasArrayType = issue.path.some((path) => typeof path === 'number') || isExpectingArray; + if (hasArrayType) { + const keySuffix = 'expected' in issue && issue.expected === 'array' ? '[]' : ''; + const key = + issue.path + .map((path) => (typeof path === 'number' ? '*' : path)) + .join('.') + .replace(/\.\*/g, '[]') + keySuffix; + acc[key] = acc[key] || []; + if (Array.isArray(acc[key])) { + acc[key].push(issue.message); + } + return acc; + } else { + acc[issue.path.join('.')] = issue.message; + } + return acc; + }, {}); +}; +const zodQrl = (qrl) => { + if (isServer) { + return { + __brand: 'zod', + async validate(ev, inputData) { + const schema = await qrl.resolve().then((obj) => { + if (typeof obj === 'function') { + obj = obj(z, ev); + } + if (obj instanceof z.Schema) { + return obj; + } else { + return z.object(obj); + } + }); + const data = inputData ?? (await ev.parseBody()); + const result = await withLocale(ev.locale(), () => schema.safeParseAsync(data)); + if (result.success) { + return result; + } else { + if (isDev) { + console.error('ERROR: Zod validation failed', result.error.issues); + } + return { + success: false, + status: 400, + error: { + formErrors: result.error.flatten().formErrors, + fieldErrors: flattenZodIssues(result.error.issues), + }, + }; + } + }, + }; + } + return void 0; +}; +const zod$ = /* @__PURE__ */ implicit$FirstArg(zodQrl); +const serverQrl = (qrl, options) => { + if (isServer) { + const captured = qrl.getCaptured(); + if (captured && captured.length > 0 && !_getContextHostElement()) { + throw new Error('For security reasons, we cannot serialize QRLs that capture lexical scope.'); + } + } + const method = options?.method?.toUpperCase?.() || 'POST'; + const headers = options?.headers || {}; + const origin = options?.origin || ''; + const fetchOptions = options?.fetchOptions || {}; + return $(async function (...args) { + const abortSignal = args.length > 0 && args[0] instanceof AbortSignal ? args.shift() : void 0; + if (isServer) { + let requestEvent = _asyncRequestStore?.getStore(); + if (!requestEvent) { + const contexts = [useQwikRouterEnv()?.ev, this, _getContextEvent()]; + requestEvent = contexts.find( + (v2) => + v2 && + Object.prototype.hasOwnProperty.call(v2, 'sharedMap') && + Object.prototype.hasOwnProperty.call(v2, 'cookie') + ); + } + return qrl.apply(requestEvent, args); + } else { + let filteredArgs = args.map((arg) => { + if (arg instanceof SubmitEvent && arg.target instanceof HTMLFormElement) { + return new FormData(arg.target); + } else if (arg instanceof Event) { + return null; + } else if (arg instanceof Node) { + return null; + } + return arg; + }); + if (!filteredArgs.length) { + filteredArgs = void 0; + } + const qrlHash = qrl.getHash(); + let query = ''; + const config = { + ...fetchOptions, + method, + headers: { + ...headers, + 'Content-Type': 'application/qwik-json', + Accept: 'application/json, application/qwik-json, text/qwik-json-stream, text/plain', + // Required so we don't call accidentally + 'X-QRL': qrlHash, + }, + signal: abortSignal, + }; + const captured = qrl.getCaptured(); + let toSend = [filteredArgs]; + if (captured?.length) { + toSend = [filteredArgs, ...captured]; + } else { + toSend = filteredArgs ? [filteredArgs] : []; + } + const body = await _serialize(toSend); + if (method === 'GET') { + query += `&${QDATA_KEY}=${encodeURIComponent(body)}`; + } else { + config.body = body; + } + const res = await fetch(`${origin}?${QFN_KEY}=${qrlHash}${query}`, config); + const contentType = res.headers.get('Content-Type'); + if (res.ok && contentType === 'text/qwik-json-stream' && res.body) { + return (async function* () { + try { + for await (const result of deserializeStream(res.body, abortSignal)) { + yield result; + } + } finally { + if (!abortSignal?.aborted) { + await res.body.cancel(); + } + } + })(); + } else if (contentType === 'application/qwik-json') { + const str = await res.text(); + const obj = _deserialize(str); + if (res.status >= 400) { + throw obj; + } + return obj; + } else if (contentType === 'application/json') { + const obj = await res.json(); + if (res.status >= 400) { + throw obj; + } + return obj; + } else if (contentType === 'text/plain' || contentType === 'text/html') { + const str = await res.text(); + if (res.status >= 400) { + throw str; + } + return str; + } + } + }); +}; +const server$ = /* @__PURE__ */ implicit$FirstArg(serverQrl); +const getValidators = (rest, qrl) => { + let id; + let serializationStrategy = DEFAULT_LOADERS_SERIALIZATION_STRATEGY; + const validators = []; + if (rest.length === 1) { + const options = rest[0]; + if (options && typeof options === 'object') { + if ('validate' in options) { + validators.push(options); + } else { + id = options.id; + if (options.serializationStrategy) { + serializationStrategy = options.serializationStrategy; + } + if (options.validation) { + validators.push(...options.validation); + } + } + } + } else if (rest.length > 1) { + validators.push(...rest.filter((v2) => !!v2)); + } + if (typeof id === 'string') { + if (isDev) { + if (!/^[\w/.-]+$/.test(id)) { + throw new Error(`Invalid id: ${id}, id can only contain [a-zA-Z0-9_.-]`); + } + } + id = `id_${id}`; + } else { + id = qrl.getHash(); + } + return { + validators: validators.reverse(), + id, + serializationStrategy, + }; +}; +const deserializeStream = async function* (stream, abortSignal) { + const reader = stream.getReader(); + try { + let buffer = ''; + const decoder = new TextDecoder(); + while (!abortSignal?.aborted) { + const result = await reader.read(); + if (result.done) { + break; + } + buffer += decoder.decode(result.value, { stream: true }); + const lines = buffer.split(/\n/); + buffer = lines.pop(); + for (const line of lines) { + const deserializedData = _deserialize(line); + yield deserializedData; + } + } + } finally { + reader.releaseLock(); + } +}; + +const ServiceWorkerRegister = (props) => + /* @__PURE__ */ jsx('script', { + type: 'module', + dangerouslySetInnerHTML: swRegister, + nonce: props.nonce, + }); + +const Form = ({ action, spaReset, reloadDocument, onSubmit$, ...rest }, key) => { + if (action) { + const isArrayApi = Array.isArray(onSubmit$); + if (isArrayApi) { + return jsx$1( + 'form', + { + ...rest, + action: action.actionPath, + 'preventdefault:submit': !reloadDocument, + onSubmit$: [ + ...onSubmit$, + // action.submit "submitcompleted" event for onSubmitCompleted$ events + !reloadDocument + ? $((evt) => { + if (!action.submitted) { + return action.submit(evt); + } + }) + : void 0, + ], + method: 'post', + ['data-spa-reset']: spaReset ? 'true' : void 0, + }, + key + ); + } + return jsx$1( + 'form', + { + ...rest, + action: action.actionPath, + 'preventdefault:submit': !reloadDocument, + onSubmit$: [ + // Since v2, this fires before the action is executed so it can be prevented + onSubmit$, + // action.submit "submitcompleted" event for onSubmitCompleted$ events + !reloadDocument ? action.submit : void 0, + ], + method: 'post', + ['data-spa-reset']: spaReset ? 'true' : void 0, + }, + key + ); + } else { + return /* @__PURE__ */ jsx( + GetForm, + { + spaReset, + reloadDocument, + onSubmit$, + ...rest, + }, + key + ); + } +}; +const GetForm = component$(({ action: _0, spaReset, reloadDocument, onSubmit$, ...rest }) => { + const nav = useNavigate(); + return /* @__PURE__ */ jsx('form', { + action: 'get', + 'preventdefault:submit': !reloadDocument, + 'data-spa-reset': spaReset ? 'true' : void 0, + ...rest, + onSubmit$: [ + ...(Array.isArray(onSubmit$) ? onSubmit$ : [onSubmit$]), + $(async (_evt, form) => { + const formData = new FormData(form); + const params = new URLSearchParams(); + formData.forEach((value, key) => { + if (typeof value === 'string') { + params.append(key, value); + } + }); + await nav('?' + params.toString(), { type: 'form', forceReload: true }); + }), + $((_evt, form) => { + if (form.getAttribute('data-spa-reset') === 'true') { + form.reset(); + } + form.dispatchEvent( + new CustomEvent('submitcompleted', { + bubbles: false, + cancelable: false, + composed: false, + detail: { + status: 200, + }, + }) + ); + }), + // end of array + ], + children: /* @__PURE__ */ jsx(Slot, {}), + }); +}); + +const untypedAppUrl = function appUrl(route, params, paramsPrefix = '') { + const path = route.split('/'); + for (let i = 0; i < path.length; i++) { + const segment = path[i]; + if (segment.startsWith('[') && segment.endsWith(']')) { + const isSpread = segment.startsWith('[...'); + const key = segment.substring(segment.startsWith('[...') ? 4 : 1, segment.length - 1); + const value = params ? params[paramsPrefix + key] || params[key] : ''; + path[i] = isSpread ? value : encodeURIComponent(value); + } + if (segment.startsWith('(') && segment.endsWith(')')) { + path.splice(i, 1); + } + } + let url = path.join('/'); + let baseURL = '/'; + if (baseURL) { + if (!baseURL.endsWith('/')) { + baseURL += '/'; + } + while (url.startsWith('/')) { + url = url.substring(1); + } + url = baseURL + url; + } + return url; +}; +function omitProps(obj, keys) { + const omittedObj = {}; + for (const key in obj) { + if (!key.startsWith('param:') && !keys.includes(key)) { + omittedObj[key] = obj[key]; + } + } + return omittedObj; +} + +const createRenderer = (getOptions) => { + return (opts) => { + const { jsx, options } = getOptions(opts); + return renderToStream(jsx, options); + }; +}; + +const DocumentHeadTags = component$((props) => { + let head = useDocumentHead(); + if (props) { + head = { ...head, ...props }; + } + return /* @__PURE__ */ jsxs(Fragment, { + children: [ + head.title && /* @__PURE__ */ jsx('title', { children: head.title }), + head.meta.map((m) => /* @__PURE__ */ jsx('meta', { ...m })), + head.links.map((l) => /* @__PURE__ */ jsx('link', { ...l })), + head.styles.map((s) => { + const props2 = s.props || s; + return /* @__PURE__ */ createElement('style', { + ...props2, + dangerouslySetInnerHTML: s.style || props2.dangerouslySetInnerHTML, + key: s.key, + }); + }), + head.scripts.map((s) => { + const props2 = s.props || s; + return /* @__PURE__ */ createElement('script', { + ...props2, + dangerouslySetInnerHTML: s.script || props2.dangerouslySetInnerHTML, + key: s.key, + }); + }), + ], + }); +}); + +export { + DocumentHeadTags, + ErrorBoundary, + Form, + Link, + QWIK_CITY_SCROLLER, + QWIK_ROUTER_SCROLLER, + QwikCityMockProvider, + QwikCityProvider, + QwikRouterMockProvider, + QwikRouterProvider, + RouterOutlet, + ServiceWorkerRegister, + createRenderer, + globalAction$, + globalActionQrl, + omitProps, + routeAction$, + routeActionQrl, + routeLoader$, + routeLoaderQrl, + server$, + serverQrl, + untypedAppUrl, + useContent, + useDocumentHead, + useLocation, + useNavigate, + usePreventNavigate$, + usePreventNavigateQrl, + useQwikRouter, + valibot$, + valibotQrl, + validator$, + validatorQrl, + zod$, + zodQrl, +}; + +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_GetForm_component_form_q_e_submit_1_0WWF0MwldwA.mjs (ENTRY POINT)== + +export const GetForm_component_form_q_e_submit_1_0WWF0MwldwA = (_evt, form)=>{ + if (form.getAttribute('data-spa-reset') === 'true') form.reset(); + form.dispatchEvent(new CustomEvent('submitcompleted', { + bubbles: false, + cancelable: false, + composed: false, + detail: { + status: 200 + } + })); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\"+DAknDQ,CAAC,MAAM;IACP,IAAI,KAAK,YAAY,CAAC,sBAAsB,QAC1C,KAAK,KAAK;IAEZ,KAAK,aAAa,CAChB,IAAI,YAAY,mBAAmB;QACjC,SAAS;QACT,YAAY;QACZ,UAAU;QACV,QAAQ;YACN,QAAQ;QACV;IACF;AAEJ\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "GetForm_component_form_q_e_submit_1_0WWF0MwldwA", + "entry": null, + "displayName": "index.qwik.mjs_GetForm_component_form_q_e_submit_1", + "hash": "0WWF0MwldwA", + "canonicalFilename": "index.qwik.mjs_GetForm_component_form_q_e_submit_1_0WWF0MwldwA", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": "GetForm_component_OIWHwJ5eKxg", + "ctxKind": "function", + "ctxName": "$", + "captures": false, + "loc": [ + 55126, + 55498 + ], + "paramNames": [ + "_evt", + "form" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_GetForm_component_OIWHwJ5eKxg.mjs (ENTRY POINT)== + +import { useNavigate } from "./index.qwik.mjs"; +import { Slot } from "@qwik.dev/core"; +import { _fnSignal } from "@qwik.dev/core"; +import { _getConstProps } from "@qwik.dev/core"; +import { _getVarProps } from "@qwik.dev/core"; +import { _jsxSorted } from "@qwik.dev/core"; +import { _jsxSplit } from "@qwik.dev/core"; +import { _restProps } from "@qwik.dev/core"; +import { qrl } from "@qwik.dev/core"; +const _qrl_GetForm_component_form_q_e_submit_1_0WWF0MwldwA = /*#__PURE__*/ qrl(()=>import("./index.qwik.mjs_GetForm_component_form_q_e_submit_1_0WWF0MwldwA.mjs"), "GetForm_component_form_q_e_submit_1_0WWF0MwldwA"); +const _hf0 = (p0)=>!p0.reloadDocument; +const _hf0_str = "!p0.reloadDocument"; +const _hf1 = (p0)=>p0.spaReset ? 'true' : void 0; +const _hf1_str = 'p0.spaReset?"true":void 0'; +const i_D0PAP3eJ0Ng = ()=>import("./index.qwik.mjs_GetForm_component_form_q_e_submit_D0PAP3eJ0Ng.mjs"); +export const GetForm_component_OIWHwJ5eKxg = (_rawProps)=>{ + const rest = _restProps(_rawProps, [ + "action", + "spaReset", + "reloadDocument", + "onSubmit$" + ]); + const nav = useNavigate(); + return /* @__PURE__ */ _jsxSplit('form', { + action: 'get', + 'preventdefault:submit': _fnSignal(_hf0, [ + _rawProps + ], _hf0_str), + 'data-spa-reset': _fnSignal(_hf1, [ + _rawProps + ], _hf1_str), + ..._getVarProps(rest), + ..._getConstProps(rest), + "q-e:submit": [ + ...Array.isArray(_rawProps.onSubmit$) ? _rawProps.onSubmit$ : [ + _rawProps.onSubmit$ + ], + /*#__PURE__*/ qrl(i_D0PAP3eJ0Ng, "GetForm_component_form_q_e_submit_D0PAP3eJ0Ng", [ + nav + ]), + _qrl_GetForm_component_form_q_e_submit_1_0WWF0MwldwA + ] + }, null, /* @__PURE__ */ _jsxSorted(Slot, null, null, null, 3, "0K_10"), 0, "0K_11"); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";;;;;;;;;;mBAmmD6B,IAJuB;;mBAK9B,GALoB,WAKT,SAAS,KAAK;;;6CALpB;;;;;;;IACzB,MAAM,MAAM;IACZ,OAAO,aAAa,GAAG,UAAI;QACzB,QAAQ;QACR,uBAAuB;;;QACvB,gBAAgB;;;wBACb;0BAAA;QACH,cAAW;eACL,MAAM,OAAO,WAR6C,uBAAA,YAQnB;0BARmB;aAQR;;;;;SA2BvD;aACS,aAAa,GAAG,WAAI;AAElC\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "GetForm_component_OIWHwJ5eKxg", + "entry": null, + "displayName": "index.qwik.mjs_GetForm_component", + "hash": "OIWHwJ5eKxg", + "canonicalFilename": "index.qwik.mjs_GetForm_component_OIWHwJ5eKxg", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 54411, + 55582 + ], + "paramNames": [ + "_rawProps" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_useQwikRouter_useStyles_XNocHv0sxCQ.mjs (ENTRY POINT)== + +export const useQwikRouter_useStyles_XNocHv0sxCQ = '@layer qwik{@supports selector(html:active-view-transition-type(type)){html:active-view-transition-type(qwik-navigation){:root{view-transition-name:none}}}@supports not selector(html:active-view-transition-type(type)){:root{view-transition-name:none}}}'; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\"mDA0RE\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "useQwikRouter_useStyles_XNocHv0sxCQ", + "entry": null, + "displayName": "index.qwik.mjs_useQwikRouter_useStyles", + "hash": "XNocHv0sxCQ", + "canonicalFilename": "index.qwik.mjs_useQwikRouter_useStyles_XNocHv0sxCQ", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": null, + "ctxKind": "function", + "ctxName": "useStyles$", + "captures": false, + "loc": [ + 8723, + 8977 + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_Link_component_useVisibleTask_6K6z063D0C4.mjs (ENTRY POINT)== + +import { _captures } from "@qwik.dev/core"; +import { isDev } from "@qwik.dev/core"; +export const Link_component_useVisibleTask_6K6z063D0C4 = ({ track })=>{ + const anchorRef = _captures[0], handlePrefetch = _captures[1], linkProps = _captures[2], loc = _captures[3]; + track(()=>loc.url.pathname); + const handler = linkProps.onQVisible$; + if (handler) { + const event = new CustomEvent('qvisible'); + if (Array.isArray(handler)) handler.flat(10).forEach((handler2)=>handler2?.(event, anchorRef.value)); + else handler?.(event, anchorRef.value); + } + if (!isDev && anchorRef.value) handlePrefetch?.(void 0, anchorRef.value); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";;yDA4KkB,CAAC,EAAE,KAAK,EAAE;;IACxB,MAAM,IAAM,IAAI,GAAG,CAAC,QAAQ;IAC5B,MAAM,UAAU,UAAU,WAAW;IACrC,IAAI,SAAS;QACX,MAAM,QAAQ,IAAI,YAAY;QAC9B,IAAI,MAAM,OAAO,CAAC,UAChB,QAAQ,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,WAAa,WAAW,OAAO,UAAU,KAAK;aAExE,UAAU,OAAO,UAAU,KAAK;IAEpC;IACA,IAAI,CAAC,SAAS,UAAU,KAAK,EAC3B,iBAAiB,KAAK,GAAG,UAAU,KAAK\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "Link_component_useVisibleTask_6K6z063D0C4", + "entry": null, + "displayName": "index.qwik.mjs_Link_component_useVisibleTask", + "hash": "6K6z063D0C4", + "canonicalFilename": "index.qwik.mjs_Link_component_useVisibleTask_6K6z063D0C4", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": "Link_component_nhj84CU1784", + "ctxKind": "function", + "ctxName": "useVisibleTask$", + "captures": true, + "loc": [ + 5200, + 5650 + ], + "paramNames": [ + "{track}" + ], + "captureNames": [ + "anchorRef", + "handlePrefetch", + "linkProps", + "loc" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_RouterOutlet_component_hKWOEO9aIDM.mjs (ENTRY POINT)== + +import { _auto_ContentInternalContext as ContentInternalContext } from "./index.qwik.mjs"; +import { _auto_spaInit as spaInit } from "./index.qwik.mjs"; +import { Fragment } from "@qwik.dev/core/jsx-runtime"; +import { SkipRender } from "@qwik.dev/core"; +import { _jsxSorted } from "@qwik.dev/core"; +import { _qrlSync } from "@qwik.dev/core"; +import { useContext } from "@qwik.dev/core"; +import { useServerData } from "@qwik.dev/core"; +export const RouterOutlet_component_hKWOEO9aIDM = ()=>{ + const serverData = useServerData('containerAttributes'); + if (!serverData) throw new Error('PrefetchServiceWorker component must be rendered on the server.'); + const internalContext = useContext(ContentInternalContext); + const contents = internalContext.value; + if (contents && contents.length > 0) { + const contentsLen = contents.length; + let cmp = null; + for(let i = contentsLen - 1; i >= 0; i--)if (contents[i].default) cmp = _jsxSorted(contents[i].default, null, null, cmp, 1, "0K_6"); + return /* @__PURE__ */ _jsxSorted(Fragment, null, null, [ + cmp, + !__EXPERIMENTAL__.noSPA && /* @__PURE__ */ _jsxSorted('script', { + "q-d:qinit": _qrlSync(()=>{ + ((w, h)=>{ + if (!w._qcs && h.scrollRestoration === 'manual') { + w._qcs = true; + const s = h.state?._qRouterScroll; + if (s) w.scrollTo(s.x, s.y); + document.dispatchEvent(new Event('qcinit')); + } + })(window, history); + }, '()=>{((w,h)=>{if(!w._qcs&&h.scrollRestoration==="manual"){w._qcs=true;const s=h.state?._qRouterScroll;if(s){w.scrollTo(s.x,s.y);}document.dispatchEvent(new Event("qcinit"));}})(window,history);}') + }, { + "q-d:qcinit": spaInit + }, null, 2, "0K_7") + ], 1, "0K_8"); + } + return SkipRender; +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";;;;;;;;kDAqkCgC;IAC9B,MAAM,aAAa,cAAc;IACjC,IAAI,CAAC,YACH,MAAM,IAAI,MAAM;IAElB,MAAM,kBAAkB,WAAW;IACnC,MAAM,WAAW,gBAAgB,KAAK;IACtC,IAAI,YAAY,SAAS,MAAM,GAAG,GAAG;QACnC,MAAM,cAAc,SAAS,MAAM;QACnC,IAAI,MAAM;QACV,IAAK,IAAI,IAAI,cAAc,GAAG,KAAK,GAAG,IACpC,IAAI,QAAQ,CAAC,EAAE,CAAC,OAAO,EACrB,MAAM,WAAM,QAAQ,CAAC,EAAE,CAAC,OAAO,cACnB;QAIhB,OAAO,aAAa,GAAG,WAAK,sBAChB;YACR;YACA,CAAC,iBAAiB,KAAK,IACrB,aAAa,GAAG,WAAI;gBAElB,WAAmB,WAAQ;oBACzB,CAAC,CAAC,GAAG;wBACH,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,iBAAiB,KAAK,UAAU;4BAC/C,EAAE,IAAI,GAAG;4BACT,MAAM,IAAI,EAAE,KAAK,EAAE;4BACnB,IAAI,GACF,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;4BAErB,SAAS,aAAa,CAAC,IAAI,MAAM;wBACnC;oBACF,CAAC,EAAE,QAAQ;gBACb;;gBAZA,cAAsB;;SAc3B;IAEL;IACA,OAAO;AACT\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "RouterOutlet_component_hKWOEO9aIDM", + "entry": null, + "displayName": "index.qwik.mjs_RouterOutlet_component", + "hash": "hKWOEO9aIDM", + "canonicalFilename": "index.qwik.mjs_RouterOutlet_component_hKWOEO9aIDM", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 37647, + 38909 + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs == + +import { componentQrl } from "@qwik.dev/core"; +import { qrl } from "@qwik.dev/core"; +import { _jsxSorted } from "@qwik.dev/core"; +import { useVisibleTaskQrl } from "@qwik.dev/core"; +import { _getVarProps } from "@qwik.dev/core"; +import { _getConstProps } from "@qwik.dev/core"; +import { _jsxSplit } from "@qwik.dev/core"; +import { eventQrl } from "@qwik.dev/core"; +import { useStylesQrl } from "@qwik.dev/core"; +import { useTaskQrl } from "@qwik.dev/core"; +import { _wrapProp } from "@qwik.dev/core"; +import { createContextId, useContext, implicit$FirstArg, noSerialize, useServerData, useSignal, untrack, isDev, withLocale, isServer, useStore, useContextProvider } from '@qwik.dev/core'; +import { i as isPromise, a as isSamePath, c as createLoaderSignal, D as DEFAULT_LOADERS_SERIALIZATION_STRATEGY, h as QACTION_KEY } from './chunks/routing.qwik.mjs'; +import { _getContextContainer, SerializerSymbol, _UNINITIALIZED, _getContextHostElement, _deserialize, _resolveContextWithoutSequentialScope } from '@qwik.dev/core/internal'; +import * as v from 'valibot'; +import * as z from 'zod'; +import swRegister from '@qwik-router-sw-register'; +import { renderToStream } from '@qwik.dev/core/server'; +import '@qwik.dev/core/preloader'; +import './chunks/types.qwik.mjs'; +const _qrl_DocumentHeadTags_component_LaCcLS5Bz4c = /*#__PURE__*/ qrl(()=>import("./index.qwik.mjs_DocumentHeadTags_component_LaCcLS5Bz4c.mjs"), "DocumentHeadTags_component_LaCcLS5Bz4c"); +const _qrl_ErrorBoundary_component_yTCHi5s1o00 = /*#__PURE__*/ qrl(()=>import("./index.qwik.mjs_ErrorBoundary_component_yTCHi5s1o00.mjs"), "ErrorBoundary_component_yTCHi5s1o00"); +const _qrl_GetForm_component_OIWHwJ5eKxg = /*#__PURE__*/ qrl(()=>import("./index.qwik.mjs_GetForm_component_OIWHwJ5eKxg.mjs"), "GetForm_component_OIWHwJ5eKxg"); +const _qrl_Link_component_nhj84CU1784 = /*#__PURE__*/ qrl(()=>import("./index.qwik.mjs_Link_component_nhj84CU1784.mjs"), "Link_component_nhj84CU1784"); +const _qrl_QwikRouterMockProvider_component_kN7AQXV0aXo = /*#__PURE__*/ qrl(()=>import("./index.qwik.mjs_QwikRouterMockProvider_component_kN7AQXV0aXo.mjs"), "QwikRouterMockProvider_component_kN7AQXV0aXo"); +const _qrl_QwikRouterProvider_component_lCQXGdS0iZM = /*#__PURE__*/ qrl(()=>import("./index.qwik.mjs_QwikRouterProvider_component_lCQXGdS0iZM.mjs"), "QwikRouterProvider_component_lCQXGdS0iZM"); +const _qrl_RouterOutlet_component_hKWOEO9aIDM = /*#__PURE__*/ qrl(()=>import("./index.qwik.mjs_RouterOutlet_component_hKWOEO9aIDM.mjs"), "RouterOutlet_component_hKWOEO9aIDM"); +const _qrl_spaInit_event_Js1cotabL5I = /*#__PURE__*/ qrl(()=>import("./index.qwik.mjs_spaInit_event_Js1cotabL5I.mjs"), "spaInit_event_Js1cotabL5I"); +const _qrl_useQwikRouter_useStyles_XNocHv0sxCQ = /*#__PURE__*/ qrl(()=>import("./index.qwik.mjs_useQwikRouter_useStyles_XNocHv0sxCQ.mjs"), "useQwikRouter_useStyles_XNocHv0sxCQ"); +const i_JY3C42B1B08 = ()=>import("./index.qwik.mjs_routeActionQrl_action_submit_JY3C42B1B08.mjs"); +const i_OSnb99dm7Ow = ()=>import("./index.qwik.mjs_useQwikRouter_goto_OSnb99dm7Ow.mjs"); +const i_RA3PmZ4Oyak = ()=>import("./index.qwik.mjs_serverQrl_RA3PmZ4Oyak.mjs"); +const i_iIfbMzzXpIA = ()=>import("./index.qwik.mjs_Form_form_q_e_submit_iIfbMzzXpIA.mjs"); +const i_no0bm2fybZo = ()=>import("./index.qwik.mjs_usePreventNavigateQrl_useVisibleTask_no0bm2fybZo.mjs"); +const i_omhKiQfdzZU = ()=>import("./index.qwik.mjs_useQwikRouter_useTask_omhKiQfdzZU.mjs"); +export { z } from 'zod'; +const ErrorBoundary = /*#__PURE__*/ componentQrl(_qrl_ErrorBoundary_component_yTCHi5s1o00); +const RouteStateContext = /* @__PURE__ */ createContextId('qc-s'); +const ContentContext = /* @__PURE__ */ createContextId('qc-c'); +const ContentInternalContext = /* @__PURE__ */ createContextId('qc-ic'); +const DocumentHeadContext = /* @__PURE__ */ createContextId('qc-h'); +const RouteLocationContext = /* @__PURE__ */ createContextId('qc-l'); +const RouteNavigateContext = /* @__PURE__ */ createContextId('qc-n'); +const RouteActionContext = /* @__PURE__ */ createContextId('qc-a'); +const RoutePreventNavigateContext = /* @__PURE__ */ createContextId('qc-p'); +const useContent = ()=>useContext(ContentContext); +const useDocumentHead = ()=>useContext(DocumentHeadContext); +const useLocation = ()=>useContext(RouteLocationContext); +const useNavigate = ()=>useContext(RouteNavigateContext); +const usePreventNavigateQrl = (fn)=>{ + if (!__EXPERIMENTAL__.preventNavigate) throw new Error('usePreventNavigate$ is experimental and must be enabled with `experimental: ["preventNavigate"]` in the `qwikVite` plugin.'); + const registerPreventNav = useContext(RoutePreventNavigateContext); + useVisibleTaskQrl(/*#__PURE__*/ qrl(i_no0bm2fybZo, "usePreventNavigateQrl_useVisibleTask_no0bm2fybZo", [ + fn, + registerPreventNav + ])); +}; +const usePreventNavigate$ = implicit$FirstArg(usePreventNavigateQrl); +const useAction = ()=>useContext(RouteActionContext); +const useQwikRouterEnv = ()=>noSerialize(useServerData('qwikrouter')); +const Link = /*#__PURE__*/ componentQrl(_qrl_Link_component_nhj84CU1784); +const createDocumentHead = (defaults)=>({ + title: defaults?.title || '', + meta: [ + ...defaults?.meta || [] + ], + links: [ + ...defaults?.links || [] + ], + styles: [ + ...defaults?.styles || [] + ], + scripts: [ + ...defaults?.scripts || [] + ], + frontmatter: { + ...defaults?.frontmatter + } + }); +const hashScroll = (toUrl, fromUrl)=>{ + const elmId = toUrl.hash.slice(1); + const elm = elmId && document.getElementById(elmId); + if (elm) { + elm.scrollIntoView(); + return true; + } else if (!elm && toUrl.hash && isSamePath(toUrl, fromUrl)) return true; + return false; +}; +const restoreScroll = (type, toUrl, fromUrl, scroller, scrollState)=>{ + if (type === 'popstate' && scrollState) scroller.scrollTo(scrollState.x, scrollState.y); + else if (type === 'link' || type === 'form') { + if (!hashScroll(toUrl, fromUrl)) scroller.scrollTo(0, 0); + } +}; +const getScrollHistory = ()=>{ + const state = history.state; + return state?._qRouterScroll; +}; +const spaInit = eventQrl(_qrl_spaInit_event_Js1cotabL5I); +const QWIK_CITY_SCROLLER = '_qCityScroller'; +const QWIK_ROUTER_SCROLLER = '_qRouterScroller'; +const preventNav = {}; +const internalState = { + navCount: 0 +}; +const useQwikRouter = (props)=>{ + if (!isServer) throw new Error('useQwikRouter can only run during SSR on the server. If you are seeing this, it means you are re-rendering the root of your application. Fix that or use the component around the root of your application.'); + useStylesQrl(_qrl_useQwikRouter_useStyles_XNocHv0sxCQ); + const env = useQwikRouterEnv(); + if (!env?.params) throw new Error(`Missing Qwik Router Env Data for help visit https://github.com/QwikDev/qwik/issues/6237`); + const urlEnv = useServerData('url'); + if (!urlEnv) throw new Error(`Missing Qwik URL Env Data`); + const serverHead = useServerData('documentHead'); + if (env.ev.originalUrl.pathname !== env.ev.url.pathname && !__EXPERIMENTAL__.enableRequestRewrite) throw new Error(`enableRequestRewrite is an experimental feature and is not enabled. Please enable the feature flag by adding \`experimental: ["enableRequestRewrite"]\` to your qwikVite plugin options.`); + const url = new URL(urlEnv); + const routeLocationTarget = { + url, + params: env.params, + isNavigating: false, + prevUrl: void 0 + }; + const routeLocation = useStore(routeLocationTarget, { + deep: false + }); + const navResolver = {}; + const container = _getContextContainer(); + const getSerializationStrategy = (loaderId)=>{ + return env.response.loadersSerializationStrategy.get(loaderId) || DEFAULT_LOADERS_SERIALIZATION_STRATEGY; + }; + const loadersObject = {}; + const loaderState = {}; + for (const [key, value] of Object.entries(env.response.loaders)){ + loadersObject[key] = value; + loaderState[key] = createLoaderSignal(loadersObject, key, url, getSerializationStrategy(key), container); + } + loadersObject[SerializerSymbol] = (obj)=>{ + const loadersSerializationObject = {}; + for (const [k, v] of Object.entries(obj))loadersSerializationObject[k] = getSerializationStrategy(k) === 'always' ? v : _UNINITIALIZED; + return loadersSerializationObject; + }; + const routeInternal = useSignal({ + type: 'initial', + dest: url, + scroll: true + }); + const documentHead = useStore(()=>createDocumentHead(serverHead)); + const content = useStore({ + headings: void 0, + menu: void 0 + }); + const contentInternal = useSignal(); + const currentActionId = env.response.action; + const currentAction = currentActionId ? env.response.loaders[currentActionId] : void 0; + const actionState = useSignal(currentAction ? { + id: currentActionId, + data: env.response.formData, + output: { + result: currentAction, + status: env.response.status + } + } : void 0); + const registerPreventNav = /*#__PURE__*/ qrl(()=>import("./index.qwik.mjs_useQwikRouter_registerPreventNav_W0LIs8PUJoA.mjs"), "useQwikRouter_registerPreventNav_W0LIs8PUJoA"); + const goto = /*#__PURE__*/ qrl(i_OSnb99dm7Ow, "useQwikRouter_goto_OSnb99dm7Ow", [ + actionState, + navResolver, + routeInternal, + routeLocation + ]); + useContextProvider(ContentContext, content); + useContextProvider(ContentInternalContext, contentInternal); + useContextProvider(DocumentHeadContext, documentHead); + useContextProvider(RouteLocationContext, routeLocation); + useContextProvider(RouteNavigateContext, goto); + useContextProvider(RouteStateContext, loaderState); + useContextProvider(RouteActionContext, actionState); + useContextProvider(RoutePreventNavigateContext, registerPreventNav); + useTaskQrl(/*#__PURE__*/ qrl(i_omhKiQfdzZU, "useQwikRouter_useTask_omhKiQfdzZU", [ + actionState, + content, + contentInternal, + documentHead, + env, + goto, + loaderState, + loadersObject, + navResolver, + props, + routeInternal, + routeLocation, + routeLocationTarget, + serverHead + ])); +}; +const QwikRouterProvider = /*#__PURE__*/ componentQrl(_qrl_QwikRouterProvider_component_lCQXGdS0iZM); +const QwikCityProvider = QwikRouterProvider; +const QwikRouterMockProvider = /*#__PURE__*/ componentQrl(_qrl_QwikRouterMockProvider_component_kN7AQXV0aXo); +const QwikCityMockProvider = QwikRouterMockProvider; +const RouterOutlet = /*#__PURE__*/ componentQrl(_qrl_RouterOutlet_component_hKWOEO9aIDM); +const getValue = (obj)=>obj.value; +const validatorQrl = (validator)=>{ + if (isServer) return { + validate: validator + }; + return void 0; +}; +const validator$ = /* @__PURE__ */ implicit$FirstArg(validatorQrl); +const flattenValibotIssues = (issues)=>{ + return issues.reduce((acc, issue)=>{ + if (issue.path) { + const hasArrayType = issue.path.some((path)=>path.type === 'array'); + if (hasArrayType) { + const keySuffix = issue.expected === 'Array' ? '[]' : ''; + const key = issue.path.map((item)=>item.type === 'array' ? '*' : item.key).join('.').replace(/\.\*/g, '[]') + keySuffix; + acc[key] = acc[key] || []; + if (Array.isArray(acc[key])) acc[key].push(issue.message); + return acc; + } else acc[issue.path.map((item)=>item.key).join('.')] = issue.message; + } + return acc; + }, {}); +}; +const valibotQrl = (qrl)=>{ + if (!__EXPERIMENTAL__.valibot) throw new Error('Valibot is an experimental feature and is not enabled. Please enable the feature flag by adding `experimental: ["valibot"]` to your qwikVite plugin options.'); + if (isServer) return { + __brand: 'valibot', + async validate (ev, inputData) { + const schema = await qrl.resolve().then((obj)=>typeof obj === 'function' ? obj(ev) : obj); + const data = inputData ?? await ev.parseBody(); + const result = await v.safeParseAsync(schema, data); + if (result.success) return { + success: true, + data: result.output + }; + else { + if (isDev) console.error('ERROR: Valibot validation failed', result.issues); + return { + success: false, + status: 400, + error: { + formErrors: v.flatten(result.issues).root ?? [], + fieldErrors: flattenValibotIssues(result.issues) + } + }; + } + } + }; + return void 0; +}; +const valibot$ = /* @__PURE__ */ implicit$FirstArg(valibotQrl); +const flattenZodIssues = (issues)=>{ + issues = Array.isArray(issues) ? issues : [ + issues + ]; + return issues.reduce((acc, issue)=>{ + const isExpectingArray = 'expected' in issue && issue.expected === 'array'; + const hasArrayType = issue.path.some((path)=>typeof path === 'number') || isExpectingArray; + if (hasArrayType) { + const keySuffix = 'expected' in issue && issue.expected === 'array' ? '[]' : ''; + const key = issue.path.map((path)=>typeof path === 'number' ? '*' : path).join('.').replace(/\.\*/g, '[]') + keySuffix; + acc[key] = acc[key] || []; + if (Array.isArray(acc[key])) acc[key].push(issue.message); + return acc; + } else acc[issue.path.join('.')] = issue.message; + return acc; + }, {}); +}; +const zodQrl = (qrl)=>{ + if (isServer) return { + __brand: 'zod', + async validate (ev, inputData) { + const schema = await qrl.resolve().then((obj)=>{ + if (typeof obj === 'function') obj = obj(z, ev); + if (obj instanceof z.Schema) return obj; + else return z.object(obj); + }); + const data = inputData ?? await ev.parseBody(); + const result = await withLocale(ev.locale(), ()=>schema.safeParseAsync(data)); + if (result.success) return result; + else { + if (isDev) console.error('ERROR: Zod validation failed', result.error.issues); + return { + success: false, + status: 400, + error: { + formErrors: result.error.flatten().formErrors, + fieldErrors: flattenZodIssues(result.error.issues) + } + }; + } + } + }; + return void 0; +}; +const zod$ = /* @__PURE__ */ implicit$FirstArg(zodQrl); +const serverQrl = (qrl1, options)=>{ + if (isServer) { + const captured = qrl1.getCaptured(); + if (captured && captured.length > 0 && !_getContextHostElement()) throw new Error('For security reasons, we cannot serialize QRLs that capture lexical scope.'); + } + const method = options?.method?.toUpperCase?.() || 'POST'; + const headers = options?.headers || {}; + const origin = options?.origin || ''; + const fetchOptions = options?.fetchOptions || {}; + return /*#__PURE__*/ qrl(i_RA3PmZ4Oyak, "serverQrl_RA3PmZ4Oyak", [ + fetchOptions, + headers, + method, + origin, + qrl1 + ]); +}; +const server$ = /* @__PURE__ */ implicit$FirstArg(serverQrl); +const getValidators = (rest, qrl)=>{ + let id; + let serializationStrategy = DEFAULT_LOADERS_SERIALIZATION_STRATEGY; + const validators = []; + if (rest.length === 1) { + const options = rest[0]; + if (options && typeof options === 'object') { + if ('validate' in options) validators.push(options); + else { + id = options.id; + if (options.serializationStrategy) serializationStrategy = options.serializationStrategy; + if (options.validation) validators.push(...options.validation); + } + } + } else if (rest.length > 1) validators.push(...rest.filter((v2)=>!!v2)); + if (typeof id === 'string') { + if (isDev) { + if (!/^[\w/.-]+$/.test(id)) throw new Error(`Invalid id: ${id}, id can only contain [a-zA-Z0-9_.-]`); + } + id = `id_${id}`; + } else id = qrl.getHash(); + return { + validators: validators.reverse(), + id, + serializationStrategy + }; +}; +const routeActionQrl = (actionQrl, ...rest)=>{ + const { id, validators } = getValidators(rest, actionQrl); + function action() { + const loc = useLocation(); + const currentAction = useAction(); + const initialState = { + actionPath: `?${QACTION_KEY}=${id}`, + submitted: false, + isRunning: false, + status: void 0, + value: void 0, + formData: void 0 + }; + const state = useStore(()=>{ + const value = currentAction.value; + if (value && value?.id === id) { + const data = value.data; + if (data instanceof FormData) initialState.formData = data; + if (value.output) { + const { status, result } = value.output; + initialState.status = status; + initialState.value = result; + } + } + return initialState; + }); + const submit = /*#__PURE__*/ qrl(i_JY3C42B1B08, "routeActionQrl_action_submit_JY3C42B1B08", [ + currentAction, + id, + loc, + state + ]); + initialState.submit = submit; + return state; + } + action.__brand = 'server_action'; + action.__validators = validators; + action.__qrl = actionQrl; + action.__id = id; + Object.freeze(action); + return action; +}; +const globalActionQrl = (actionQrl, ...rest)=>{ + const action = routeActionQrl(actionQrl, ...rest); + if (isServer) { + if (typeof globalThis._qwikActionsMap === 'undefined') globalThis._qwikActionsMap = /* @__PURE__ */ new Map(); + globalThis._qwikActionsMap.set(action.__id, action); + } + return action; +}; +const routeAction$ = /* @__PURE__ */ implicit$FirstArg(routeActionQrl); +const globalAction$ = /* @__PURE__ */ implicit$FirstArg(globalActionQrl); +const routeLoaderQrl = (loaderQrl, ...rest)=>{ + const { id, validators, serializationStrategy } = getValidators(rest, loaderQrl); + function loader() { + const state = _resolveContextWithoutSequentialScope(RouteStateContext); + if (!(id in state)) throw new Error(`routeLoader$ "${loaderQrl.getSymbol()}" was invoked in a route where it was not declared. + This is because the routeLoader$ was not exported in a 'layout.tsx' or 'index.tsx' file of the existing route. + For more information check: https://qwik.dev/docs/route-loader/ + + If your are managing reusable logic or a library it is essential that this function is re-exported from within 'layout.tsx' or 'index.tsx file of the existing route otherwise it will not run or throw exception. + For more information check: https://qwik.dev/docs/re-exporting-loaders/`); + const loaderData = state[id]; + untrack(getValue, loaderData); + return loaderData; + } + loader.__brand = 'server_loader'; + loader.__qrl = loaderQrl; + loader.__validators = validators; + loader.__id = id; + loader.__serializationStrategy = serializationStrategy; + loader.__expires = -1; + Object.freeze(loader); + return loader; +}; +const routeLoader$ = /* @__PURE__ */ implicit$FirstArg(routeLoaderQrl); +const ServiceWorkerRegister = (props)=>/* @__PURE__ */ _jsxSorted('script', { + nonce: _wrapProp(props, "nonce") + }, { + type: 'module', + dangerouslySetInnerHTML: swRegister + }, null, 3, "0K_9"); +const GetForm = /*#__PURE__*/ componentQrl(_qrl_GetForm_component_OIWHwJ5eKxg); +const Form = ({ action, spaReset, reloadDocument, onSubmit$, ...rest }, key)=>{ + if (action) { + const isArrayApi = Array.isArray(onSubmit$); + if (isArrayApi) return _jsxSplit('form', { + ..._getVarProps(rest), + ..._getConstProps(rest), + action: _wrapProp(action, "actionPath"), + 'preventdefault:submit': !reloadDocument, + "q-e:submit": [ + ...onSubmit$, + // action.submit "submitcompleted" event for onSubmitCompleted$ events + !reloadDocument ? /*#__PURE__*/ qrl(i_iIfbMzzXpIA, "Form_form_q_e_submit_iIfbMzzXpIA", [ + action + ]) : void 0 + ], + ['data-spa-reset']: spaReset ? 'true' : void 0 + }, { + method: 'post' + }, null, 0, key); + return _jsxSplit('form', { + ..._getVarProps(rest), + ..._getConstProps(rest), + action: _wrapProp(action, "actionPath"), + 'preventdefault:submit': !reloadDocument, + "q-e:submit": [ + // Since v2, this fires before the action is executed so it can be prevented + onSubmit$, + // action.submit "submitcompleted" event for onSubmitCompleted$ events + !reloadDocument ? action.submit : void 0 + ], + ['data-spa-reset']: spaReset ? 'true' : void 0 + }, { + method: 'post' + }, null, 0, key); + } else return /* @__PURE__ */ _jsxSplit(GetForm, { + spaReset, + reloadDocument, + onSubmit$, + ..._getVarProps(rest) + }, _getConstProps(rest), null, 0, key); +}; +const untypedAppUrl = function appUrl(route, params, paramsPrefix = '') { + const path = route.split('/'); + for(let i = 0; i < path.length; i++){ + const segment = path[i]; + if (segment.startsWith('[') && segment.endsWith(']')) { + const isSpread = segment.startsWith('[...'); + const key = segment.substring(segment.startsWith('[...') ? 4 : 1, segment.length - 1); + const value = params ? params[paramsPrefix + key] || params[key] : ''; + path[i] = isSpread ? value : encodeURIComponent(value); + } + if (segment.startsWith('(') && segment.endsWith(')')) path.splice(i, 1); + } + let url = path.join('/'); + let baseURL = '/'; + if (baseURL) { + if (!baseURL.endsWith('/')) baseURL += '/'; + while(url.startsWith('/'))url = url.substring(1); + url = baseURL + url; + } + return url; +}; +function omitProps(obj, keys) { + const omittedObj = {}; + for(const key in obj)if (!key.startsWith('param:') && !keys.includes(key)) omittedObj[key] = obj[key]; + return omittedObj; +} +const createRenderer = (getOptions)=>{ + return (opts)=>{ + const { jsx, options } = getOptions(opts); + return renderToStream(jsx, options); + }; +}; +const DocumentHeadTags = /*#__PURE__*/ componentQrl(_qrl_DocumentHeadTags_component_LaCcLS5Bz4c); +export { DocumentHeadTags, ErrorBoundary, Form, Link, QWIK_CITY_SCROLLER, QWIK_ROUTER_SCROLLER, QwikCityMockProvider, QwikCityProvider, QwikRouterMockProvider, QwikRouterProvider, RouterOutlet, ServiceWorkerRegister, createRenderer, globalAction$, globalActionQrl, omitProps, routeAction$, routeActionQrl, routeLoader$, routeLoaderQrl, server$, serverQrl, untypedAppUrl, useContent, useDocumentHead, useLocation, useNavigate, usePreventNavigate$, usePreventNavigateQrl, useQwikRouter, valibot$, valibotQrl, validator$, validatorQrl, zod$, zodQrl }; +export { ContentInternalContext as _auto_ContentInternalContext }; +export { getScrollHistory as _auto_getScrollHistory }; +export { internalState as _auto_internalState }; +export { preventNav as _auto_preventNav }; +export { restoreScroll as _auto_restoreScroll }; +export { spaInit as _auto_spaInit }; +export { useQwikRouterEnv as _auto_useQwikRouterEnv }; +export { ContentContext as _auto_ContentContext }; +export { DocumentHeadContext as _auto_DocumentHeadContext }; +export { RouteActionContext as _auto_RouteActionContext }; +export { RouteLocationContext as _auto_RouteLocationContext }; +export { RouteNavigateContext as _auto_RouteNavigateContext }; +export { RouteStateContext as _auto_RouteStateContext }; +export { createDocumentHead as _auto_createDocumentHead }; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\"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\"}") +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_Link_component_handlePreload_MhXmSxzp4GE.mjs (ENTRY POINT)== + +import { p as preloadRouteBundles } from "./chunks/routing.qwik.mjs"; +export const Link_component_handlePreload_MhXmSxzp4GE = (_, elm)=>{ + const url = new URL(elm.href); + preloadRouteBundles(url.pathname, 1); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";wDAwK0B,CAAC,GAAG;IAC1B,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI;IAC5B,oBAAoB,IAAI,QAAQ,EAAE;AACpC\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "Link_component_handlePreload_MhXmSxzp4GE", + "entry": null, + "displayName": "index.qwik.mjs_Link_component_handlePreload", + "hash": "MhXmSxzp4GE", + "canonicalFilename": "index.qwik.mjs_Link_component_handlePreload_MhXmSxzp4GE", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": "Link_component_nhj84CU1784", + "ctxKind": "function", + "ctxName": "$", + "captures": false, + "loc": [ + 5085, + 5179 + ], + "paramNames": [ + "_", + "elm" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_ErrorBoundary_component_useOnWindow_GYhPAutMLGk.mjs (ENTRY POINT)== + +import { _captures } from "@qwik.dev/core"; +export const ErrorBoundary_component_useOnWindow_GYhPAutMLGk = (e)=>{ + const store = _captures[0]; + store.error = e.detail.error; +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";+DA4EM,CAAC;;IACD,MAAM,KAAK,GAAG,EAAE,MAAM,CAAC,KAAK\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "ErrorBoundary_component_useOnWindow_GYhPAutMLGk", + "entry": null, + "displayName": "index.qwik.mjs_ErrorBoundary_component_useOnWindow", + "hash": "GYhPAutMLGk", + "canonicalFilename": "index.qwik.mjs_ErrorBoundary_component_useOnWindow_GYhPAutMLGk", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": "ErrorBoundary_component_yTCHi5s1o00", + "ctxKind": "function", + "ctxName": "$", + "captures": true, + "loc": [ + 1704, + 1754 + ], + "paramNames": [ + "e" + ], + "captureNames": [ + "store" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_QwikRouterMockProvider_component_kN7AQXV0aXo.mjs (ENTRY POINT)== + +import { _auto_ContentContext as ContentContext } from "./index.qwik.mjs"; +import { _auto_ContentInternalContext as ContentInternalContext } from "./index.qwik.mjs"; +import { _auto_DocumentHeadContext as DocumentHeadContext } from "./index.qwik.mjs"; +import { _auto_RouteActionContext as RouteActionContext } from "./index.qwik.mjs"; +import { _auto_RouteLocationContext as RouteLocationContext } from "./index.qwik.mjs"; +import { _auto_RouteNavigateContext as RouteNavigateContext } from "./index.qwik.mjs"; +import { _auto_RouteStateContext as RouteStateContext } from "./index.qwik.mjs"; +import { _auto_createDocumentHead as createDocumentHead } from "./index.qwik.mjs"; +import { Slot } from "@qwik.dev/core"; +import { _jsxSorted } from "@qwik.dev/core"; +import { qrl } from "@qwik.dev/core"; +import { useContextProvider } from "@qwik.dev/core"; +import { useSignal } from "@qwik.dev/core"; +import { useStore } from "@qwik.dev/core"; +import { useTaskQrl } from "@qwik.dev/core"; +const i_oml2hW1aK6I = ()=>import("./index.qwik.mjs_useQwikMockRouter_useTask_oml2hW1aK6I.mjs"); +const useQwikMockRouter = (props)=>{ + const urlEnv = props.url ?? 'http://localhost/'; + const url = new URL(urlEnv); + const routeLocation = useStore({ + url, + params: props.params ?? {}, + isNavigating: false, + prevUrl: void 0 + }, { + deep: false + }); + const loadersData = props.loaders?.reduce((acc, { loader, data })=>{ + acc[loader.__id] = data; + return acc; + }, {}); + const loaderState = useStore(loadersData ?? {}, { + deep: false + }); + const goto = props.goto ?? /*#__PURE__*/ qrl(()=>import("./index.qwik.mjs_useQwikMockRouter_goto_ojVznvSDqoM.mjs"), "useQwikMockRouter_goto_ojVznvSDqoM"); + const documentHead = useStore(createDocumentHead, { + deep: false + }); + const content = useStore({ + headings: void 0, + menu: void 0 + }, { + deep: false + }); + const contentInternal = useSignal(); + const actionState = useSignal(); + useContextProvider(ContentContext, content); + useContextProvider(ContentInternalContext, contentInternal); + useContextProvider(DocumentHeadContext, documentHead); + useContextProvider(RouteLocationContext, routeLocation); + useContextProvider(RouteNavigateContext, goto); + useContextProvider(RouteStateContext, loaderState); + useContextProvider(RouteActionContext, actionState); + const actionsMocks = props.actions?.reduce((acc, { action, handler })=>{ + acc[action.__id] = handler; + return acc; + }, {}); + useTaskQrl(/*#__PURE__*/ qrl(i_oml2hW1aK6I, "useQwikMockRouter_useTask_oml2hW1aK6I", [ + actionState, + actionsMocks + ])); +}; +export const QwikRouterMockProvider_component_kN7AQXV0aXo = (props)=>{ + useQwikMockRouter(props); + return /* @__PURE__ */ _jsxSorted(Slot, null, null, null, 3, "0K_5"); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;;;;MAwgCM,oBAAoB,CAAC;IACzB,MAAM,SAAS,MAAM,GAAG,IAAI;IAC5B,MAAM,MAAM,IAAI,IAAI;IACpB,MAAM,gBAAgB,SACpB;QACE;QACA,QAAQ,MAAM,MAAM,IAAI,CAAC;QACzB,cAAc;QACd,SAAS,KAAK;IAChB,GACA;QAAE,MAAM;IAAM;IAEhB,MAAM,cAAc,MAAM,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE;QAC9D,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG;QACnB,OAAO;IACT,GAAG,CAAC;IACJ,MAAM,cAAc,SAAS,eAAe,CAAC,GAAG;QAAE,MAAM;IAAM;IAC9D,MAAM,OACJ,MAAM,IAAI;IAIZ,MAAM,eAAe,SAAS,oBAAoB;QAAE,MAAM;IAAM;IAChE,MAAM,UAAU,SACd;QACE,UAAU,KAAK;QACf,MAAM,KAAK;IACb,GACA;QAAE,MAAM;IAAM;IAEhB,MAAM,kBAAkB;IACxB,MAAM,cAAc;IACpB,mBAAmB,gBAAgB;IACnC,mBAAmB,wBAAwB;IAC3C,mBAAmB,qBAAqB;IACxC,mBAAmB,sBAAsB;IACzC,mBAAmB,sBAAsB;IACzC,mBAAmB,mBAAmB;IACtC,mBAAmB,oBAAoB;IACvC,MAAM,eAAe,MAAM,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;QAClE,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG;QACnB,OAAO;IACT,GAAG,CAAC;IACJ;;;;AAWF;4DAC0C,CAAC;IACzC,kBAAkB;IAClB,OAAO,aAAa,GAAG,WAAI;AAC7B\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "QwikRouterMockProvider_component_kN7AQXV0aXo", + "entry": null, + "displayName": "index.qwik.mjs_QwikRouterMockProvider_component", + "hash": "kN7AQXV0aXo", + "canonicalFilename": "index.qwik.mjs_QwikRouterMockProvider_component_kN7AQXV0aXo", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 37476, + 37558 + ], + "paramNames": [ + "props" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_useQwikRouter_registerPreventNav_W0LIs8PUJoA.mjs (ENTRY POINT)== + +import { _auto_internalState as internalState } from "./index.qwik.mjs"; +import { _auto_preventNav as preventNav } from "./index.qwik.mjs"; +import { isBrowser } from "@qwik.dev/core"; +export const useQwikRouter_registerPreventNav_W0LIs8PUJoA = (fn$)=>{ + if (!isBrowser) return; + preventNav.$handler$ ||= (event)=>{ + internalState.navCount++; + if (!preventNav.$cbs$) return; + const prevents = [ + ...preventNav.$cbs$.values() + ].map((cb)=>cb.resolved ? cb.resolved() : cb()); + if (prevents.some(Boolean)) { + event.preventDefault(); + event.returnValue = true; + } + }; + (preventNav.$cbs$ ||= /* @__PURE__ */ new Set()).add(fn$); + fn$.resolve(); + window.addEventListener('beforeunload', preventNav.$handler$); + return ()=>{ + if (preventNav.$cbs$) { + preventNav.$cbs$.delete(fn$); + if (!preventNav.$cbs$.size) { + preventNav.$cbs$ = void 0; + window.removeEventListener('beforeunload', preventNav.$handler$); + } + } + }; +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";;;4DAukB+B,CAAC;IAC5B,IAAI,CAAC,WACH;IAEF,WAAW,SAAS,KAAK,CAAC;QACxB,cAAc,QAAQ;QACtB,IAAI,CAAC,WAAW,KAAK,EACnB;QAEF,MAAM,WAAW;eAAI,WAAW,KAAK,CAAC,MAAM;SAAG,CAAC,GAAG,CAAC,CAAC,KACnD,GAAG,QAAQ,GAAG,GAAG,QAAQ,KAAK;QAEhC,IAAI,SAAS,IAAI,CAAC,UAAU;YAC1B,MAAM,cAAc;YACpB,MAAM,WAAW,GAAG;QACtB;IACF;IACA,CAAC,WAAW,KAAK,KAAK,aAAa,GAAG,IAAI,KAAK,EAAE,GAAG,CAAC;IACrD,IAAI,OAAO;IACX,OAAO,gBAAgB,CAAC,gBAAgB,WAAW,SAAS;IAC5D,OAAO;QACL,IAAI,WAAW,KAAK,EAAE;YACpB,WAAW,KAAK,CAAC,MAAM,CAAC;YACxB,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,EAAE;gBAC1B,WAAW,KAAK,GAAG,KAAK;gBACxB,OAAO,mBAAmB,CAAC,gBAAgB,WAAW,SAAS;YACjE;QACF;IACF;AACF\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "useQwikRouter_registerPreventNav_W0LIs8PUJoA", + "entry": null, + "displayName": "index.qwik.mjs_useQwikRouter_registerPreventNav", + "hash": "W0LIs8PUJoA", + "canonicalFilename": "index.qwik.mjs_useQwikRouter_registerPreventNav_W0LIs8PUJoA", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": null, + "ctxKind": "function", + "ctxName": "$", + "captures": false, + "loc": [ + 19044, + 19876 + ], + "paramNames": [ + "fn$" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_Form_form_q_e_submit_iIfbMzzXpIA.mjs (ENTRY POINT)== + +import { _captures } from "@qwik.dev/core"; +export const Form_form_q_e_submit_iIfbMzzXpIA = (evt)=>{ + const action = _captures[0]; + if (!action.submitted) return action.submit(evt); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";gDAojDkB,CAAC;;IACD,IAAI,CAAC,OAAO,SAAS,EACnB,OAAO,OAAO,MAAM,CAAC\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "Form_form_q_e_submit_iIfbMzzXpIA", + "entry": null, + "displayName": "index.qwik.mjs_Form_form_q_e_submit", + "hash": "iIfbMzzXpIA", + "canonicalFilename": "index.qwik.mjs_Form_form_q_e_submit_iIfbMzzXpIA", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": null, + "ctxKind": "function", + "ctxName": "$", + "captures": true, + "loc": [ + 53387, + 53525 + ], + "paramNames": [ + "evt" + ], + "captureNames": [ + "action" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_useQwikMockRouter_goto_ojVznvSDqoM.mjs (ENTRY POINT)== + +export const useQwikMockRouter_goto_ojVznvSDqoM = async ()=>{ + console.warn('QwikRouterMockProvider: goto not provided'); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\"kDA2hCM;IACA,QAAQ,IAAI,CAAC;AACf\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "useQwikMockRouter_goto_ojVznvSDqoM", + "entry": null, + "displayName": "index.qwik.mjs_useQwikMockRouter_goto", + "hash": "ojVznvSDqoM", + "canonicalFilename": "index.qwik.mjs_useQwikMockRouter_goto_ojVznvSDqoM", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": null, + "ctxKind": "function", + "ctxName": "$", + "captures": false, + "loc": [ + 36289, + 36373 + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_DocumentHeadTags_component_LaCcLS5Bz4c.mjs (ENTRY POINT)== + +import { useDocumentHead } from "./index.qwik.mjs"; +import { Fragment } from "@qwik.dev/core/jsx-runtime"; +import { _getConstProps } from "@qwik.dev/core"; +import { _getVarProps } from "@qwik.dev/core"; +import { _jsxSorted } from "@qwik.dev/core"; +import { _jsxSplit } from "@qwik.dev/core"; +import { createElement } from "@qwik.dev/core"; +export const DocumentHeadTags_component_LaCcLS5Bz4c = (props)=>{ + let head = useDocumentHead(); + if (props) head = { + ...head, + ...props + }; + return /* @__PURE__ */ _jsxSorted(Fragment, null, null, [ + head.title && /* @__PURE__ */ _jsxSorted('title', null, null, head.title, 1, "0K_12"), + head.meta.map((m)=>/* @__PURE__ */ _jsxSplit('meta', { + ..._getVarProps(m) + }, _getConstProps(m), null, 0, "0K_13")), + head.links.map((l)=>/* @__PURE__ */ _jsxSplit('link', { + ..._getVarProps(l) + }, _getConstProps(l), null, 0, "0K_14")), + head.styles.map((s)=>{ + const props2 = s.props || s; + return /* @__PURE__ */ createElement('style', { + ...props2, + dangerouslySetInnerHTML: s.style || props2.dangerouslySetInnerHTML, + key: s.key + }); + }), + head.scripts.map((s)=>{ + const props2 = s.props || s; + return /* @__PURE__ */ createElement('script', { + ...props2, + dangerouslySetInnerHTML: s.script || props2.dangerouslySetInnerHTML, + key: s.key + }); + }) + ], 1, "0K_15"); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";;;;;;;sDAmrDoC,CAAC;IACnC,IAAI,OAAO;IACX,IAAI,OACF,OAAO;QAAE,GAAG,IAAI;QAAE,GAAG,KAAK;IAAC;IAE7B,OAAO,aAAa,GAAG,WAAK,sBAChB;QACR,KAAK,KAAK,IAAI,aAAa,GAAG,WAAI,qBAAqB,KAAK,KAAK;QACjE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAM,aAAa,GAAG,UAAI;gCAAa;8BAAA;QACtD,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,IAAM,aAAa,GAAG,UAAI;gCAAa;8BAAA;QACvD,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC;YACf,MAAM,SAAS,EAAE,KAAK,IAAI;YAC1B,OAAO,aAAa,GAAG,cAAc,SAAS;gBAC5C,GAAG,MAAM;gBACT,yBAAyB,EAAE,KAAK,IAAI,OAAO,uBAAuB;gBAClE,KAAK,EAAE,GAAG;YACZ;QACF;QACA,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;YAChB,MAAM,SAAS,EAAE,KAAK,IAAI;YAC1B,OAAO,aAAa,GAAG,cAAc,UAAU;gBAC7C,GAAG,MAAM;gBACT,yBAAyB,EAAE,MAAM,IAAI,OAAO,uBAAuB;gBACnE,KAAK,EAAE,GAAG;YACZ;QACF;KACD;AAEL\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "DocumentHeadTags_component_LaCcLS5Bz4c", + "entry": null, + "displayName": "index.qwik.mjs_DocumentHeadTags_component", + "hash": "LaCcLS5Bz4c", + "canonicalFilename": "index.qwik.mjs_DocumentHeadTags_component_LaCcLS5Bz4c", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 56859, + 57777 + ], + "paramNames": [ + "props" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_spaInit_event_Js1cotabL5I.mjs (ENTRY POINT)== + +import { isDev } from "@qwik.dev/core"; +export const spaInit_event_Js1cotabL5I = (_, el)=>{ + if (!window._qRouterSPA && !window._qRouterInitPopstate) { + const currentPath = location.pathname + location.search; + const checkAndScroll = (scrollState)=>{ + if (scrollState) window.scrollTo(scrollState.x, scrollState.y); + }; + const currentScrollState = ()=>{ + const elm = document.documentElement; + return { + x: elm.scrollLeft, + y: elm.scrollTop, + w: Math.max(elm.scrollWidth, elm.clientWidth), + h: Math.max(elm.scrollHeight, elm.clientHeight) + }; + }; + const saveScrollState = (scrollState)=>{ + const state = history.state || {}; + state._qRouterScroll = scrollState || currentScrollState(); + history.replaceState(state, ''); + }; + saveScrollState(); + window._qRouterInitPopstate = ()=>{ + if (window._qRouterSPA) return; + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + if (currentPath !== location.pathname + location.search) { + const getContainer = (el2)=>el2.closest('[q\\:container]:not([q\\:container=html]):not([q\\:container=text])'); + const container = getContainer(el); + const domContainer = container.qContainer; + const hostElement = domContainer.vNodeLocate(el); + const nav = domContainer?.resolveContext(hostElement, { + id: 'qc--n' + }); + if (nav) nav(location.href, { + type: 'popstate' + }); + else location.reload(); + } else if (history.scrollRestoration === 'manual') { + const scrollState = history.state?._qRouterScroll; + checkAndScroll(scrollState); + window._qRouterScrollEnabled = true; + } + }; + if (!window._qRouterHistoryPatch) { + window._qRouterHistoryPatch = true; + const pushState = history.pushState; + const replaceState = history.replaceState; + const prepareState = (state)=>{ + if (state === null || typeof state === 'undefined') state = {}; + else if (state?.constructor !== Object) { + state = { + _data: state + }; + if (isDev) console.warn('In a Qwik SPA context, `history.state` is used to store scroll state. Direct calls to `pushState()` and `replaceState()` must supply an actual Object type. We need to be able to automatically attach the scroll state to your state object. A new state object has been created, your data has been moved to: `history.state._data`'); + } + state._qRouterScroll = state._qRouterScroll || currentScrollState(); + return state; + }; + history.pushState = (state, title, url)=>{ + state = prepareState(state); + return pushState.call(history, state, title, url); + }; + history.replaceState = (state, title, url)=>{ + state = prepareState(state); + return replaceState.call(history, state, title, url); + }; + } + window._qRouterInitAnchors = (event)=>{ + if (window._qRouterSPA || event.defaultPrevented) return; + const target = event.target.closest('a[href]'); + if (target && !target.hasAttribute('preventdefault:click')) { + const href = target.getAttribute('href'); + const prev = new URL(location.href); + const dest = new URL(href, prev); + const sameOrigin = dest.origin === prev.origin; + const samePath = dest.pathname + dest.search === prev.pathname + prev.search; + if (sameOrigin && samePath) { + event.preventDefault(); + if (dest.href !== prev.href) history.pushState(null, '', dest); + if (!dest.hash) { + if (dest.href.endsWith('#')) window.scrollTo(0, 0); + else { + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + saveScrollState({ + ...currentScrollState(), + x: 0, + y: 0 + }); + location.reload(); + } + } else { + const elmId = dest.hash.slice(1); + const elm = document.getElementById(elmId); + if (elm) elm.scrollIntoView(); + } + } + } + }; + window._qRouterInitVisibility = ()=>{ + if (!window._qRouterSPA && window._qRouterScrollEnabled && document.visibilityState === 'hidden') saveScrollState(); + }; + window._qRouterInitScroll = ()=>{ + if (window._qRouterSPA || !window._qRouterScrollEnabled) return; + clearTimeout(window._qRouterScrollDebounce); + window._qRouterScrollDebounce = setTimeout(()=>{ + saveScrollState(); + window._qRouterScrollDebounce = void 0; + }, 200); + }; + window._qRouterScrollEnabled = true; + setTimeout(()=>{ + window.addEventListener('popstate', window._qRouterInitPopstate); + window.addEventListener('scroll', window._qRouterInitScroll, { + passive: true + }); + document.addEventListener('click', window._qRouterInitAnchors); + if (!window.navigation) document.addEventListener('visibilitychange', window._qRouterInitVisibility, { + passive: true + }); + }, 0); + } +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\"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\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "spaInit_event_Js1cotabL5I", + "entry": null, + "displayName": "index.qwik.mjs_spaInit_event", + "hash": "Js1cotabL5I", + "canonicalFilename": "index.qwik.mjs_spaInit_event_Js1cotabL5I", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": null, + "ctxKind": "function", + "ctxName": "event$", + "captures": false, + "loc": [ + 10232, + 15588 + ], + "paramNames": [ + "_", + "el" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_QwikRouterProvider_component_lCQXGdS0iZM.mjs (ENTRY POINT)== + +import { useQwikRouter } from "./index.qwik.mjs"; +import { Slot } from "@qwik.dev/core"; +import { _jsxSorted } from "@qwik.dev/core"; +export const QwikRouterProvider_component_lCQXGdS0iZM = (props)=>{ + useQwikRouter(props); + return /* @__PURE__ */ _jsxSorted(Slot, null, null, null, 3, "0K_4"); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";;;wDAmgCsC,CAAC;IACrC,cAAc;IACd,OAAO,aAAa,GAAG,WAAI;AAC7B\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "QwikRouterProvider_component_lCQXGdS0iZM", + "entry": null, + "displayName": "index.qwik.mjs_QwikRouterProvider_component", + "hash": "lCQXGdS0iZM", + "canonicalFilename": "index.qwik.mjs_QwikRouterProvider_component_lCQXGdS0iZM", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 35640, + 35718 + ], + "paramNames": [ + "props" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_Link_component_handlePrefetch_Evus9ZlzXpQ.mjs (ENTRY POINT)== + +import { l as loadClientData } from "./chunks/routing.qwik.mjs"; +import { p as preloadRouteBundles } from "./chunks/routing.qwik.mjs"; +export const Link_component_handlePrefetch_Evus9ZlzXpQ = (_, elm)=>{ + if (navigator.connection?.saveData) return; + if (elm && elm.href) { + const url = new URL(elm.href); + preloadRouteBundles(url.pathname); + if (elm.hasAttribute('data-prefetch')) loadClientData(url, { + preloadRouteBundles: false, + isPrefetch: true + }); + } +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";;yDAqIQ,CAAC,GAAG;IACJ,IAAI,UAAU,UAAU,EAAE,UACxB;IAEF,IAAI,OAAO,IAAI,IAAI,EAAE;QACnB,MAAM,MAAM,IAAI,IAAI,IAAI,IAAI;QAC5B,oBAAoB,IAAI,QAAQ;QAChC,IAAI,IAAI,YAAY,CAAC,kBACnB,eAAe,KAAK;YAClB,qBAAqB;YACrB,YAAY;QACd;IAEJ;AACF\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "Link_component_handlePrefetch_Evus9ZlzXpQ", + "entry": null, + "displayName": "index.qwik.mjs_Link_component_handlePrefetch", + "hash": "Evus9ZlzXpQ", + "canonicalFilename": "index.qwik.mjs_Link_component_handlePrefetch_Evus9ZlzXpQ", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": "Link_component_nhj84CU1784", + "ctxKind": "function", + "ctxName": "$", + "captures": false, + "loc": [ + 4027, + 4436 + ], + "paramNames": [ + "_", + "elm" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_useQwikRouter_useTask_omhKiQfdzZU.mjs (ENTRY POINT)== + +import { _captures } from "@qwik.dev/core"; +import { QWIK_ROUTER_SCROLLER } from "./index.qwik.mjs"; +import { _auto_getScrollHistory as getScrollHistory } from "./index.qwik.mjs"; +import { _auto_restoreScroll as restoreScroll } from "./index.qwik.mjs"; +import { _auto_spaInit as spaInit } from "./index.qwik.mjs"; +import { _auto_createDocumentHead as createDocumentHead } from "./index.qwik.mjs"; +import { C as CLIENT_DATA_CACHE } from "./chunks/routing.qwik.mjs"; +import { D as DEFAULT_LOADERS_SERIALIZATION_STRATEGY } from "./chunks/routing.qwik.mjs"; +import { Q as Q_ROUTE } from "./chunks/routing.qwik.mjs"; +import { _getContextContainer } from "@qwik.dev/core/internal"; +import { _hasStoreEffects } from "@qwik.dev/core/internal"; +import { _waitUntilRendered } from "@qwik.dev/core/internal"; +import { e as clientNavigate } from "./chunks/routing.qwik.mjs"; +import { c as createLoaderSignal } from "./chunks/routing.qwik.mjs"; +import { forceStoreEffects } from "@qwik.dev/core/internal"; +import { getLocale } from "@qwik.dev/core"; +import { isBrowser } from "@qwik.dev/core"; +import { isDev } from "@qwik.dev/core"; +import { i as isPromise } from "./chunks/routing.qwik.mjs"; +import { b as isSameOrigin } from "./chunks/routing.qwik.mjs"; +import { a as isSamePath } from "./chunks/routing.qwik.mjs"; +import { isServer } from "@qwik.dev/core"; +import { l as loadClientData } from "./chunks/routing.qwik.mjs"; +import { d as loadRoute } from "./chunks/routing.qwik.mjs"; +import { noSerialize } from "@qwik.dev/core"; +import * as qwikRouterConfig from "@qwik-router-config"; +import { withLocale } from "@qwik.dev/core"; +const mergeArray = (existingArr, newArr)=>{ + if (Array.isArray(newArr)) for (const newItem of newArr){ + if (typeof newItem.key === 'string') { + const existingIndex = existingArr.findIndex((i)=>i.key === newItem.key); + if (existingIndex > -1) { + existingArr[existingIndex] = newItem; + continue; + } + } + existingArr.push(newItem); + } +}; +const resolveDocumentHead = (resolvedHead, updatedHead)=>{ + if (typeof updatedHead.title === 'string') resolvedHead.title = updatedHead.title; + mergeArray(resolvedHead.meta, updatedHead.meta); + mergeArray(resolvedHead.links, updatedHead.links); + mergeArray(resolvedHead.styles, updatedHead.styles); + mergeArray(resolvedHead.scripts, updatedHead.scripts); + Object.assign(resolvedHead.frontmatter, updatedHead.frontmatter); +}; +const resolveHead = (endpoint, routeLocation, contentModules, locale, defaults)=>withLocale(locale, ()=>{ + const head = createDocumentHead(defaults); + const getData = (loaderOrAction)=>{ + const id = loaderOrAction.__id; + if (loaderOrAction.__brand === 'server_loader') { + if (!(id in endpoint.loaders)) throw new Error('You can not get the returned data of a loader that has not been executed for this request.'); + } + const data = endpoint.loaders[id]; + if (isPromise(data)) throw new Error('Loaders returning a promise can not be resolved for the head function.'); + return data; + }; + const fns = []; + for (const contentModule of contentModules){ + const contentModuleHead = contentModule?.head; + if (contentModuleHead) { + if (typeof contentModuleHead === 'function') fns.unshift(contentModuleHead); + else if (typeof contentModuleHead === 'object') resolveDocumentHead(head, contentModuleHead); + } + } + if (fns.length) { + const headProps = { + head, + withLocale: (fn)=>fn(), + resolveValue: getData, + ...routeLocation + }; + for (const fn of fns)resolveDocumentHead(head, fn(headProps)); + } + return head; + }); +function callRestoreScrollOnDocument() { + if (document.__q_scroll_restore__) { + document.__q_scroll_restore__(); + document.__q_scroll_restore__ = void 0; + } +} +const currentScrollState = (elm)=>{ + return { + x: elm.scrollLeft, + y: elm.scrollTop, + w: Math.max(elm.scrollWidth, elm.clientWidth), + h: Math.max(elm.scrollHeight, elm.clientHeight) + }; +}; +const saveScrollHistory = (scrollState)=>{ + const state = history.state || {}; + state._qRouterScroll = scrollState; + history.replaceState(state, ''); +}; +const startViewTransition = (params)=>{ + if (!params.update) return; + if ('startViewTransition' in document) { + let transition; + try { + transition = document.startViewTransition(params); + } catch { + transition = document.startViewTransition(params.update); + } + const event = new CustomEvent('qviewtransition', { + detail: transition + }); + document.dispatchEvent(event); + return transition; + } else params.update?.(); +}; +export const useQwikRouter_useTask_omhKiQfdzZU = ({ track })=>{ + const actionState = _captures[0], content = _captures[1], contentInternal = _captures[2], documentHead = _captures[3], env = _captures[4], goto = _captures[5], loaderState = _captures[6], loadersObject = _captures[7], navResolver = _captures[8], props = _captures[9], routeInternal = _captures[10], routeLocation = _captures[11], routeLocationTarget = _captures[12], serverHead = _captures[13]; + async function run() { + const navigation = track(routeInternal); + const action = track(actionState); + const locale = getLocale(''); + const prevUrl = routeLocation.url; + const navType = action ? 'form' : navigation.type; + const replaceState = navigation.replaceState; + let trackUrl; + let clientPageData; + let loadedRoute = null; + let container2; + if (isServer) { + trackUrl = new URL(navigation.dest, routeLocation.url); + loadedRoute = env.loadedRoute; + clientPageData = env.response; + } else { + trackUrl = new URL(navigation.dest, location); + if (trackUrl.pathname.endsWith('/')) { + if (globalThis.__NO_TRAILING_SLASH__) trackUrl.pathname = trackUrl.pathname.slice(0, -1); + } else if (!globalThis.__NO_TRAILING_SLASH__) trackUrl.pathname += '/'; + let loadRoutePromise = loadRoute(qwikRouterConfig.routes, qwikRouterConfig.menus, qwikRouterConfig.cacheModules, trackUrl.pathname); + container2 = _getContextContainer(); + const pageData = clientPageData = await loadClientData(trackUrl, { + action, + clearCache: true + }); + if (!pageData) { + routeInternal.untrackedValue = { + type: navType, + dest: trackUrl + }; + return; + } + const newHref = pageData.href; + const newURL = new URL(newHref, trackUrl); + if (!isSamePath(newURL, trackUrl)) { + if (!pageData.isRewrite) trackUrl = newURL; + loadRoutePromise = loadRoute(qwikRouterConfig.routes, qwikRouterConfig.menus, qwikRouterConfig.cacheModules, newURL.pathname); + } + try { + loadedRoute = await loadRoutePromise; + } catch (e) { + console.error(e); + window.location.href = newHref; + return; + } + } + if (loadedRoute) { + const [routeName, params, mods, menu] = loadedRoute; + const contentModules = mods; + const pageModule = contentModules[contentModules.length - 1]; + if (navigation.dest.search && !!isSamePath(trackUrl, prevUrl)) trackUrl.search = navigation.dest.search; + let shouldForcePrevUrl = false; + let shouldForceUrl = false; + let shouldForceParams = false; + if (!isSamePath(trackUrl, prevUrl)) { + if (_hasStoreEffects(routeLocation, 'prevUrl')) shouldForcePrevUrl = true; + routeLocationTarget.prevUrl = prevUrl; + } + if (routeLocationTarget.url !== trackUrl) { + if (_hasStoreEffects(routeLocation, 'url')) shouldForceUrl = true; + routeLocationTarget.url = trackUrl; + } + if (routeLocationTarget.params !== params) { + if (_hasStoreEffects(routeLocation, 'params')) shouldForceParams = true; + routeLocationTarget.params = params; + } + routeInternal.untrackedValue = { + type: navType, + dest: trackUrl + }; + const resolvedHead = resolveHead(clientPageData, routeLocation, contentModules, locale, serverHead); + content.headings = pageModule.headings; + content.menu = menu; + contentInternal.untrackedValue = noSerialize(contentModules); + documentHead.links = resolvedHead.links; + documentHead.meta = resolvedHead.meta; + documentHead.styles = resolvedHead.styles; + documentHead.scripts = resolvedHead.scripts; + documentHead.title = resolvedHead.title; + documentHead.frontmatter = resolvedHead.frontmatter; + if (isBrowser) { + let scrollState; + if (navType === 'popstate') scrollState = getScrollHistory(); + const scroller = document.getElementById(QWIK_ROUTER_SCROLLER) ?? document.documentElement; + if (navigation.scroll && (!navigation.forceReload || !isSamePath(trackUrl, prevUrl)) && (navType === 'link' || navType === 'popstate') || navType === 'form' && !isSamePath(trackUrl, prevUrl)) document.__q_scroll_restore__ = ()=>restoreScroll(navType, trackUrl, prevUrl, scroller, scrollState); + const loaders = clientPageData?.loaders; + if (loaders) { + const container3 = _getContextContainer(); + for (const [key, value] of Object.entries(loaders)){ + const signal = loaderState[key]; + const awaitedValue = await value; + loadersObject[key] = awaitedValue; + if (!signal) loaderState[key] = createLoaderSignal(loadersObject, key, trackUrl, DEFAULT_LOADERS_SERIALIZATION_STRATEGY, container3); + else signal.invalidate(); + } + } + CLIENT_DATA_CACHE.clear(); + if (!window._qRouterSPA) { + window._qRouterSPA = true; + history.scrollRestoration = 'manual'; + window.addEventListener('popstate', ()=>{ + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + goto(location.href, { + type: 'popstate' + }); + }); + window.removeEventListener('popstate', window._qRouterInitPopstate); + window._qRouterInitPopstate = void 0; + if (!window._qRouterHistoryPatch) { + window._qRouterHistoryPatch = true; + const pushState = history.pushState; + const replaceState2 = history.replaceState; + const prepareState = (state)=>{ + if (state === null || typeof state === 'undefined') state = {}; + else if (state?.constructor !== Object) { + state = { + _data: state + }; + if (isDev) console.warn('In a Qwik SPA context, `history.state` is used to store scroll state. Direct calls to `pushState()` and `replaceState()` must supply an actual Object type. We need to be able to automatically attach the scroll state to your state object. A new state object has been created, your data has been moved to: `history.state._data`'); + } + state._qRouterScroll = state._qRouterScroll || currentScrollState(scroller); + return state; + }; + history.pushState = (state, title, url2)=>{ + state = prepareState(state); + return pushState.call(history, state, title, url2); + }; + history.replaceState = (state, title, url2)=>{ + state = prepareState(state); + return replaceState2.call(history, state, title, url2); + }; + } + document.addEventListener('click', (event)=>{ + if (event.defaultPrevented) return; + const target = event.target.closest('a[href]'); + if (target && !target.hasAttribute('preventdefault:click')) { + const href = target.getAttribute('href'); + const prev = new URL(location.href); + const dest = new URL(href, prev); + if (isSameOrigin(dest, prev) && isSamePath(dest, prev)) { + event.preventDefault(); + if (!dest.hash && !dest.href.endsWith('#')) { + if (dest.href !== prev.href) history.pushState(null, '', dest); + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + saveScrollHistory({ + ...currentScrollState(scroller), + x: 0, + y: 0 + }); + location.reload(); + return; + } + goto(target.getAttribute('href')); + } + } + }); + document.removeEventListener('click', window._qRouterInitAnchors); + window._qRouterInitAnchors = void 0; + if (!window.navigation) { + document.addEventListener('visibilitychange', ()=>{ + if ((window._qRouterScrollEnabled || window._qCityScrollEnabled) && document.visibilityState === 'hidden') { + if (window._qCityScrollEnabled) console.warn('"_qCityScrollEnabled" is deprecated. Use "_qRouterScrollEnabled" instead.'); + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + } + }, { + passive: true + }); + document.removeEventListener('visibilitychange', window._qRouterInitVisibility); + window._qRouterInitVisibility = void 0; + } + window.addEventListener('scroll', ()=>{ + if (!window._qRouterScrollEnabled && !window._qCityScrollEnabled) return; + clearTimeout(window._qRouterScrollDebounce); + window._qRouterScrollDebounce = setTimeout(()=>{ + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + window._qRouterScrollDebounce = void 0; + }, 200); + }, { + passive: true + }); + removeEventListener('scroll', window._qRouterInitScroll); + window._qRouterInitScroll = void 0; + spaInit.resolve(); + } + if (navType !== 'popstate') { + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + } + const navigate = ()=>{ + clientNavigate(window, navType, prevUrl, trackUrl, replaceState); + contentInternal.trigger(); + return _waitUntilRendered(container2); + }; + const _waitNextPage = ()=>{ + if (isServer || props?.viewTransition === false) return navigate(); + else { + const viewTransition = startViewTransition({ + update: navigate, + types: [ + 'qwik-navigation' + ] + }); + if (!viewTransition) return Promise.resolve(); + return viewTransition.ready; + } + }; + _waitNextPage().catch((err)=>{ + navigate(); + throw err; + }).finally(()=>{ + container2.element.setAttribute?.(Q_ROUTE, routeName); + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + window._qRouterScrollEnabled = true; + if (isBrowser) callRestoreScrollOnDocument(); + if (shouldForcePrevUrl) forceStoreEffects(routeLocation, 'prevUrl'); + if (shouldForceUrl) forceStoreEffects(routeLocation, 'url'); + if (shouldForceParams) forceStoreEffects(routeLocation, 'params'); + routeLocation.isNavigating = false; + navResolver.r?.(); + }); + } + } + } + if (isServer) return run(); + else run(); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\"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\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "useQwikRouter_useTask_omhKiQfdzZU", + "entry": null, + "displayName": "index.qwik.mjs_useQwikRouter_useTask", + "hash": "omhKiQfdzZU", + "canonicalFilename": "index.qwik.mjs_useQwikRouter_useTask_omhKiQfdzZU", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": null, + "ctxKind": "function", + "ctxName": "useTask$", + "captures": true, + "loc": [ + 23188, + 35596 + ], + "paramNames": [ + "{track}" + ], + "captureNames": [ + "actionState", + "content", + "contentInternal", + "documentHead", + "env", + "goto", + "loaderState", + "loadersObject", + "navResolver", + "props", + "routeInternal", + "routeLocation", + "routeLocationTarget", + "serverHead" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_usePreventNavigateQrl_useVisibleTask_no0bm2fybZo.mjs (ENTRY POINT)== + +import { _captures } from "@qwik.dev/core"; +export const usePreventNavigateQrl_useVisibleTask_no0bm2fybZo = ()=>{ + const fn = _captures[0], registerPreventNav = _captures[1]; + return registerPreventNav(fn); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";gEA0GkB;;WAAM,mBAAmB\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "usePreventNavigateQrl_useVisibleTask_no0bm2fybZo", + "entry": null, + "displayName": "index.qwik.mjs_usePreventNavigateQrl_useVisibleTask", + "hash": "no0bm2fybZo", + "canonicalFilename": "index.qwik.mjs_usePreventNavigateQrl_useVisibleTask_no0bm2fybZo", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": null, + "ctxKind": "function", + "ctxName": "useVisibleTask$", + "captures": true, + "loc": [ + 3065, + 3093 + ], + "captureNames": [ + "fn", + "registerPreventNav" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_useQwikMockRouter_useTask_oml2hW1aK6I.mjs (ENTRY POINT)== + +import { _captures } from "@qwik.dev/core"; +export const useQwikMockRouter_useTask_oml2hW1aK6I = async ({ track })=>{ + const actionState = _captures[0], actionsMocks = _captures[1]; + const action = track(actionState); + if (!action?.resolve) return; + const mock = actionsMocks?.[action.id]; + if (mock) { + const actionResult = await mock(action.data); + action.resolve(actionResult); + } +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";qDAmjCW,OAAO,EAAE,KAAK,EAAE;;IACvB,MAAM,SAAS,MAAM;IACrB,IAAI,CAAC,QAAQ,SACX;IAEF,MAAM,OAAO,cAAc,CAAC,OAAO,EAAE,CAAC;IACtC,IAAI,MAAM;QACR,MAAM,eAAe,MAAM,KAAK,OAAO,IAAI;QAC3C,OAAO,OAAO,CAAC;IACjB\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "useQwikMockRouter_useTask_oml2hW1aK6I", + "entry": null, + "displayName": "index.qwik.mjs_useQwikMockRouter_useTask", + "hash": "oml2hW1aK6I", + "canonicalFilename": "index.qwik.mjs_useQwikMockRouter_useTask_oml2hW1aK6I", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": null, + "ctxKind": "function", + "ctxName": "useTask$", + "captures": true, + "loc": [ + 37161, + 37428 + ], + "paramNames": [ + "{track}" + ], + "captureNames": [ + "actionState", + "actionsMocks" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_serverQrl_RA3PmZ4Oyak.mjs (ENTRY POINT)== + +import { _captures } from "@qwik.dev/core"; +import { _auto_useQwikRouterEnv as useQwikRouterEnv } from "./index.qwik.mjs"; +import { j as QDATA_KEY } from "./chunks/routing.qwik.mjs"; +import { f as QFN_KEY } from "./chunks/routing.qwik.mjs"; +import { _asyncRequestStore } from "@qwik.dev/router/middleware/request-handler"; +import { _deserialize } from "@qwik.dev/core/internal"; +import { _getContextEvent } from "@qwik.dev/core/internal"; +import { _serialize } from "@qwik.dev/core/internal"; +import { isServer } from "@qwik.dev/core"; +import { qrl } from "@qwik.dev/core"; +const deserializeStream = async function*(stream, abortSignal) { + const reader = stream.getReader(); + try { + let buffer = ''; + const decoder = new TextDecoder(); + while(!abortSignal?.aborted){ + const result = await reader.read(); + if (result.done) break; + buffer += decoder.decode(result.value, { + stream: true + }); + const lines = buffer.split(/\n/); + buffer = lines.pop(); + for (const line of lines){ + const deserializedData = _deserialize(line); + yield deserializedData; + } + } + } finally{ + reader.releaseLock(); + } +}; +export const serverQrl_RA3PmZ4Oyak = async function(...args) { + const fetchOptions = _captures[0], headers = _captures[1], method = _captures[2], origin = _captures[3], qrl = _captures[4]; + const abortSignal = args.length > 0 && args[0] instanceof AbortSignal ? args.shift() : void 0; + if (isServer) { + let requestEvent = _asyncRequestStore?.getStore(); + if (!requestEvent) { + const contexts = [ + useQwikRouterEnv()?.ev, + this, + _getContextEvent() + ]; + requestEvent = contexts.find((v2)=>v2 && Object.prototype.hasOwnProperty.call(v2, 'sharedMap') && Object.prototype.hasOwnProperty.call(v2, 'cookie')); + } + return qrl.apply(requestEvent, args); + } else { + let filteredArgs = args.map((arg)=>{ + if (arg instanceof SubmitEvent && arg.target instanceof HTMLFormElement) return new FormData(arg.target); + else if (arg instanceof Event) return null; + else if (arg instanceof Node) return null; + return arg; + }); + if (!filteredArgs.length) filteredArgs = void 0; + const qrlHash = qrl.getHash(); + let query = ''; + const config = { + ...fetchOptions, + method, + headers: { + ...headers, + 'Content-Type': 'application/qwik-json', + Accept: 'application/json, application/qwik-json, text/qwik-json-stream, text/plain', + // Required so we don't call accidentally + 'X-QRL': qrlHash + }, + signal: abortSignal + }; + const captured = qrl.getCaptured(); + let toSend = [ + filteredArgs + ]; + if (captured?.length) toSend = [ + filteredArgs, + ...captured + ]; + else toSend = filteredArgs ? [ + filteredArgs + ] : []; + const body = await _serialize(toSend); + if (method === 'GET') query += `&${QDATA_KEY}=${encodeURIComponent(body)}`; + else config.body = body; + const res = await fetch(`${origin}?${QFN_KEY}=${qrlHash}${query}`, config); + const contentType = res.headers.get('Content-Type'); + if (res.ok && contentType === 'text/qwik-json-stream' && res.body) return async function*() { + try { + for await (const result of deserializeStream(res.body, abortSignal))yield result; + } finally{ + if (!abortSignal?.aborted) await res.body.cancel(); + } + }(); + else if (contentType === 'application/qwik-json') { + const str = await res.text(); + const obj = _deserialize(str); + if (res.status >= 400) throw obj; + return obj; + } else if (contentType === 'application/json') { + const obj = await res.json(); + if (res.status >= 400) throw obj; + return obj; + } else if (contentType === 'text/plain' || contentType === 'text/html') { + const str = await res.text(); + if (res.status >= 400) throw str; + return str; + } + } +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\"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\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "serverQrl_RA3PmZ4Oyak", + "entry": null, + "displayName": "index.qwik.mjs_serverQrl", + "hash": "RA3PmZ4Oyak", + "canonicalFilename": "index.qwik.mjs_serverQrl_RA3PmZ4Oyak", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": null, + "ctxKind": "function", + "ctxName": "$", + "captures": true, + "loc": [ + 48020, + 51034 + ], + "paramNames": [ + "...args" + ], + "captureNames": [ + "fetchOptions", + "headers", + "method", + "origin", + "qrl" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_Link_component_handleClientSideNavigation_rMfmL7bFMLU.mjs (ENTRY POINT)== + +import { _captures } from "@qwik.dev/core"; +export const Link_component_handleClientSideNavigation_rMfmL7bFMLU = (event, elm)=>{ + const nav = _captures[0], reload = _captures[1], replaceState = _captures[2], scroll = _captures[3]; + if (event.defaultPrevented) { + if (elm.href) { + elm.setAttribute('aria-pressed', 'true'); + nav(elm.href, { + forceReload: reload, + replaceState, + scroll + }).then(()=>{ + elm.removeAttribute('aria-pressed'); + }); + } + } +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";qEA6JQ,CAAC,OAAO;;IACR,IAAI,MAAM,gBAAgB,EACxB;QAAA,IAAI,IAAI,IAAI,EAAE;YACZ,IAAI,YAAY,CAAC,gBAAgB;YACjC,IAAI,IAAI,IAAI,EAAE;gBAAE,aAAa;gBAAQ;gBAAc;YAAO,GAAG,IAAI,CAAC;gBAChE,IAAI,eAAe,CAAC;YACtB;QACF;IAAA\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "Link_component_handleClientSideNavigation_rMfmL7bFMLU", + "entry": null, + "displayName": "index.qwik.mjs_Link_component_handleClientSideNavigation", + "hash": "rMfmL7bFMLU", + "canonicalFilename": "index.qwik.mjs_Link_component_handleClientSideNavigation_rMfmL7bFMLU", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": "Link_component_nhj84CU1784", + "ctxKind": "function", + "ctxName": "$", + "captures": true, + "loc": [ + 4725, + 5043 + ], + "paramNames": [ + "event", + "elm" + ], + "captureNames": [ + "nav", + "reload", + "replaceState", + "scroll" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_Link_component_nhj84CU1784.mjs (ENTRY POINT)== + +import { useLocation } from "./index.qwik.mjs"; +import { useNavigate } from "./index.qwik.mjs"; +import { Slot } from "@qwik.dev/core"; +import { _getConstProps } from "@qwik.dev/core"; +import { _getVarProps } from "@qwik.dev/core"; +import { _jsxSorted } from "@qwik.dev/core"; +import { _jsxSplit } from "@qwik.dev/core"; +import { _qrlSync } from "@qwik.dev/core"; +import { g as getClientNavPath } from "./chunks/routing.qwik.mjs"; +import { qrl } from "@qwik.dev/core"; +import { s as shouldPreload } from "./chunks/routing.qwik.mjs"; +import { untrack } from "@qwik.dev/core"; +import { useSignal } from "@qwik.dev/core"; +import { useVisibleTaskQrl } from "@qwik.dev/core"; +const _qrl_Link_component_handlePrefetch_Evus9ZlzXpQ = /*#__PURE__*/ qrl(()=>import("./index.qwik.mjs_Link_component_handlePrefetch_Evus9ZlzXpQ.mjs"), "Link_component_handlePrefetch_Evus9ZlzXpQ"); +const _qrl_Link_component_handlePreload_MhXmSxzp4GE = /*#__PURE__*/ qrl(()=>import("./index.qwik.mjs_Link_component_handlePreload_MhXmSxzp4GE.mjs"), "Link_component_handlePreload_MhXmSxzp4GE"); +const i_6K6z063D0C4 = ()=>import("./index.qwik.mjs_Link_component_useVisibleTask_6K6z063D0C4.mjs"); +const i_rMfmL7bFMLU = ()=>import("./index.qwik.mjs_Link_component_handleClientSideNavigation_rMfmL7bFMLU.mjs"); +export const Link_component_nhj84CU1784 = (props)=>{ + const nav = useNavigate(); + const loc = useLocation(); + const originalHref = props.href; + const anchorRef = useSignal(); + const { onClick$, prefetch: prefetchProp, reload, replaceState, scroll, ...linkProps } = /* @__PURE__ */ (()=>props)(); + const clientNavPath = untrack(getClientNavPath, { + ...linkProps, + reload + }, loc); + linkProps.href = clientNavPath || originalHref; + const prefetchData = !!clientNavPath && prefetchProp !== false && prefetchProp !== 'js' || void 0; + const prefetch = prefetchData || !!clientNavPath && prefetchProp !== false && untrack(shouldPreload, clientNavPath, loc); + const handlePrefetch = prefetch ? _qrl_Link_component_handlePrefetch_Evus9ZlzXpQ : void 0; + const preventDefault = clientNavPath ? _qrlSync((event)=>{ + if (!(event.metaKey || event.ctrlKey || event.shiftKey || event.altKey)) event.preventDefault(); + }, "event=>{if(!(event.metaKey||event.ctrlKey||event.shiftKey||event.altKey)){event.preventDefault();}}") : void 0; + const handleClientSideNavigation = clientNavPath ? /*#__PURE__*/ qrl(i_rMfmL7bFMLU, "Link_component_handleClientSideNavigation_rMfmL7bFMLU", [ + nav, + reload, + replaceState, + scroll + ]) : void 0; + const handlePreload = _qrl_Link_component_handlePreload_MhXmSxzp4GE; + useVisibleTaskQrl(/*#__PURE__*/ qrl(i_6K6z063D0C4, "Link_component_useVisibleTask_6K6z063D0C4", [ + anchorRef, + handlePrefetch, + linkProps, + loc + ])); + return /* @__PURE__ */ _jsxSplit('a', { + ref: anchorRef, + 'q:link': !!clientNavPath, + ..._getVarProps(linkProps), + ..._getConstProps(linkProps), + "q-e:click": [ + preventDefault, + handlePreload, + // needs to be in between preventDefault and onClick$ to ensure it starts asap. + onClick$, + handleClientSideNavigation + ], + 'data-prefetch': prefetchData, + "q-e:mouseover": [ + linkProps.onMouseOver$, + handlePrefetch + ], + "q-e:focus": [ + linkProps.onFocus$, + handlePrefetch + ] + }, { + "q-e:qvisible": [] + }, /* @__PURE__ */ _jsxSorted(Slot, null, null, null, 3, "0K_2"), 0, "0K_3"); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;;;;;;0CAgHwB,CAAC;IACvB,MAAM,MAAM;IACZ,MAAM,MAAM;IACZ,MAAM,eAAe,MAAM,IAAI;IAC/B,MAAM,YAAY;IAClB,MAAM,EACJ,QAAQ,EACR,UAAU,YAAY,EACtB,MAAM,EACN,YAAY,EACZ,MAAM,EACN,GAAG,WACJ,GAAG,aAAa,GAAG,CAAC,IAAM,KAAK;IAChC,MAAM,gBAAgB,QAAQ,kBAAkB;QAAE,GAAG,SAAS;QAAE;IAAO,GAAG;IAC1E,UAAU,IAAI,GAAG,iBAAiB;IAClC,MAAM,eACJ,AAAC,CAAC,CAAC,iBAAiB,iBAAiB,SAAS,iBAAiB,QAAS,KAAK;IAC/E,MAAM,WACJ,gBACC,CAAC,CAAC,iBAAiB,iBAAiB,SAAS,QAAQ,eAAe,eAAe;IACtF,MAAM,iBAAiB,4DAgBnB,KAAK;IACT,MAAM,iBAAiB,yBACb,CAAC;QACL,IAAI,CAAC,CAAC,MAAM,OAAO,IAAI,MAAM,OAAO,IAAI,MAAM,QAAQ,IAAI,MAAM,MAAM,GACpE,MAAM,cAAc;IAExB,4GACA,KAAK;IACT,MAAM,6BAA6B;;;;;SAW/B,KAAK;IACT,MAAM;IAIN;;;;;;IAeA,OAAO,aAAa,GAAG,UAAI;QACzB,KAAK;QACA,UAAU,CAAC,CAAC;wBACd;0BAAA;QACH,aAAU;YACR;YACA;YACA,+EAA+E;YAC/E;YACA;SACD;QACD,iBAAiB;QACjB,iBAAc;YAAC,UAAU,YAAY;YAAE;SAAe;QACtD,aAAU;YAAC,UAAU,QAAQ;YAAE;SAAe;;QAC9C,gBAAa,EAAE;OACL,aAAa,GAAG,WAAI;AAElC\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "Link_component_nhj84CU1784", + "entry": null, + "displayName": "index.qwik.mjs_Link_component", + "hash": "nhj84CU1784", + "canonicalFilename": "index.qwik.mjs_Link_component_nhj84CU1784", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 3323, + 6187 + ], + "paramNames": [ + "props" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_GetForm_component_form_q_e_submit_D0PAP3eJ0Ng.mjs (ENTRY POINT)== + +import { _captures } from "@qwik.dev/core"; +export const GetForm_component_form_q_e_submit_D0PAP3eJ0Ng = async (_evt, form)=>{ + const nav = _captures[0]; + const formData = new FormData(form); + const params = new URLSearchParams(); + formData.forEach((value, key)=>{ + if (typeof value === 'string') params.append(key, value); + }); + await nav('?' + params.toString(), { + type: 'form', + forceReload: true + }); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";6DAwmDQ,OAAO,MAAM;;IACb,MAAM,WAAW,IAAI,SAAS;IAC9B,MAAM,SAAS,IAAI;IACnB,SAAS,OAAO,CAAC,CAAC,OAAO;QACvB,IAAI,OAAO,UAAU,UACnB,OAAO,MAAM,CAAC,KAAK;IAEvB;IACA,MAAM,IAAI,MAAM,OAAO,QAAQ,IAAI;QAAE,MAAM;QAAQ,aAAa;IAAK\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "GetForm_component_form_q_e_submit_D0PAP3eJ0Ng", + "entry": null, + "displayName": "index.qwik.mjs_GetForm_component_form_q_e_submit", + "hash": "D0PAP3eJ0Ng", + "canonicalFilename": "index.qwik.mjs_GetForm_component_form_q_e_submit_D0PAP3eJ0Ng", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": "GetForm_component_OIWHwJ5eKxg", + "ctxKind": "function", + "ctxName": "$", + "captures": true, + "loc": [ + 54763, + 55115 + ], + "paramNames": [ + "_evt", + "form" + ], + "captureNames": [ + "nav" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_useQwikRouter_goto_OSnb99dm7Ow.mjs (ENTRY POINT)== + +import { _captures } from "@qwik.dev/core"; +import { QWIK_CITY_SCROLLER } from "./index.qwik.mjs"; +import { QWIK_ROUTER_SCROLLER } from "./index.qwik.mjs"; +import { _auto_getScrollHistory as getScrollHistory } from "./index.qwik.mjs"; +import { _auto_internalState as internalState } from "./index.qwik.mjs"; +import { _auto_preventNav as preventNav } from "./index.qwik.mjs"; +import { _auto_restoreScroll as restoreScroll } from "./index.qwik.mjs"; +import { isBrowser } from "@qwik.dev/core"; +import { isDev } from "@qwik.dev/core"; +import { b as isSameOrigin } from "./chunks/routing.qwik.mjs"; +import { a as isSamePath } from "./chunks/routing.qwik.mjs"; +import { l as loadClientData } from "./chunks/routing.qwik.mjs"; +import { d as loadRoute } from "./chunks/routing.qwik.mjs"; +import * as qwikRouterConfig from "@qwik-router-config"; +import { t as toUrl } from "./chunks/routing.qwik.mjs"; +export const useQwikRouter_goto_OSnb99dm7Ow = async (path, opt)=>{ + const actionState = _captures[0], navResolver = _captures[1], routeInternal = _captures[2], routeLocation = _captures[3]; + const { type = 'link', forceReload = path === void 0, // Hack for nav() because this API is already set. + replaceState = false, scroll = true } = typeof opt === 'object' ? opt : { + forceReload: opt + }; + internalState.navCount++; + if (isBrowser && type === 'link' && routeInternal.value.type === 'initial') { + const url2 = new URL(window.location.href); + routeInternal.value.dest = url2; + routeLocation.url = url2; + } + const lastDest = routeInternal.value.dest; + const dest = path === void 0 ? lastDest : typeof path === 'number' ? path : toUrl(path, routeLocation.url); + if (preventNav.$cbs$ && (forceReload || typeof dest === 'number' || !isSamePath(dest, lastDest) || !isSameOrigin(dest, lastDest))) { + const ourNavId = internalState.navCount; + const prevents = await Promise.all([ + ...preventNav.$cbs$.values() + ].map((cb)=>cb(dest))); + if (ourNavId !== internalState.navCount || prevents.some(Boolean)) { + if (ourNavId === internalState.navCount && type === 'popstate') history.pushState(null, '', lastDest); + return; + } + } + if (typeof dest === 'number') { + if (isBrowser) history.go(dest); + return; + } + if (!isSameOrigin(dest, lastDest)) { + if (isBrowser) location.href = dest.href; + return; + } + if (!forceReload && isSamePath(dest, lastDest)) { + if (isBrowser) { + if (type === 'link' && dest.href !== location.href) history.pushState(null, '', dest); + let scroller = document.getElementById(QWIK_ROUTER_SCROLLER); + if (!scroller) { + scroller = document.getElementById(QWIK_CITY_SCROLLER); + if (scroller && isDev) console.warn(`Please update your scroller ID to "${QWIK_ROUTER_SCROLLER}" as "${QWIK_CITY_SCROLLER}" is deprecated and will be removed in V3`); + } + if (!scroller) scroller = document.documentElement; + restoreScroll(type, dest, new URL(location.href), scroller, getScrollHistory()); + if (type === 'popstate') window._qRouterScrollEnabled = true; + } + return; + } + routeInternal.value = { + type, + dest, + forceReload, + replaceState, + scroll + }; + if (isBrowser) { + loadClientData(dest); + loadRoute(qwikRouterConfig.routes, qwikRouterConfig.menus, qwikRouterConfig.cacheModules, dest.pathname); + } + actionState.value = void 0; + routeLocation.isNavigating = true; + return new Promise((resolve)=>{ + navResolver.r = resolve; + }); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;;;8CAqmBiB,OAAO,MAAM;;IAC1B,MAAM,EACJ,OAAO,MAAM,EACb,cAAc,SAAS,KAAK,CAAC,EAC7B,kDAAkD;IAClD,eAAe,KAAK,EACpB,SAAS,IAAI,EACd,GAAG,OAAO,QAAQ,WAAW,MAAM;QAAE,aAAa;IAAI;IACvD,cAAc,QAAQ;IACtB,IAAI,aAAa,SAAS,UAAU,cAAc,KAAK,CAAC,IAAI,KAAK,WAAW;QAC1E,MAAM,OAAO,IAAI,IAAI,OAAO,QAAQ,CAAC,IAAI;QACzC,cAAc,KAAK,CAAC,IAAI,GAAG;QAC3B,cAAc,GAAG,GAAG;IACtB;IACA,MAAM,WAAW,cAAc,KAAK,CAAC,IAAI;IACzC,MAAM,OACJ,SAAS,KAAK,IAAI,WAAW,OAAO,SAAS,WAAW,OAAO,MAAM,MAAM,cAAc,GAAG;IAC9F,IACE,WAAW,KAAK,IAChB,CAAC,eACC,OAAO,SAAS,YAChB,CAAC,WAAW,MAAM,aAClB,CAAC,aAAa,MAAM,SAAS,GAC/B;QACA,MAAM,WAAW,cAAc,QAAQ;QACvC,MAAM,WAAW,MAAM,QAAQ,GAAG,CAAC;eAAI,WAAW,KAAK,CAAC,MAAM;SAAG,CAAC,GAAG,CAAC,CAAC,KAAO,GAAG;QACjF,IAAI,aAAa,cAAc,QAAQ,IAAI,SAAS,IAAI,CAAC,UAAU;YACjE,IAAI,aAAa,cAAc,QAAQ,IAAI,SAAS,YAClD,QAAQ,SAAS,CAAC,MAAM,IAAI;YAE9B;QACF;IACF;IACA,IAAI,OAAO,SAAS,UAAU;QAC5B,IAAI,WACF,QAAQ,EAAE,CAAC;QAEb;IACF;IACA,IAAI,CAAC,aAAa,MAAM,WAAW;QACjC,IAAI,WACF,SAAS,IAAI,GAAG,KAAK,IAAI;QAE3B;IACF;IACA,IAAI,CAAC,eAAe,WAAW,MAAM,WAAW;QAC9C,IAAI,WAAW;YACb,IAAI,SAAS,UAAU,KAAK,IAAI,KAAK,SAAS,IAAI,EAChD,QAAQ,SAAS,CAAC,MAAM,IAAI;YAE9B,IAAI,WAAW,SAAS,cAAc,CAAC;YACvC,IAAI,CAAC,UAAU;gBACb,WAAW,SAAS,cAAc,CAAC;gBACnC,IAAI,YAAY,OACd,QAAQ,IAAI,CACV,CAAC,mCAAmC,EAAE,qBAAqB,MAAM,EAAE,mBAAmB,yCAAyC,CAAC;YAGtI;YACA,IAAI,CAAC,UACH,WAAW,SAAS,eAAe;YAErC,cAAc,MAAM,MAAM,IAAI,IAAI,SAAS,IAAI,GAAG,UAAU;YAC5D,IAAI,SAAS,YACX,OAAO,qBAAqB,GAAG;QAEnC;QACA;IACF;IACA,cAAc,KAAK,GAAG;QACpB;QACA;QACA;QACA;QACA;IACF;IACA,IAAI,WAAW;QACb,eAAe;QACf,UACE,iBAAiB,MAAM,EACvB,iBAAiB,KAAK,EACtB,iBAAiB,YAAY,EAC7B,KAAK,QAAQ;IAEjB;IACA,YAAY,KAAK,GAAG,KAAK;IACzB,cAAc,YAAY,GAAG;IAC7B,OAAO,IAAI,QAAQ,CAAC;QAClB,YAAY,CAAC,GAAG;IAClB\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "useQwikRouter_goto_OSnb99dm7Ow", + "entry": null, + "displayName": "index.qwik.mjs_useQwikRouter_goto", + "hash": "OSnb99dm7Ow", + "canonicalFilename": "index.qwik.mjs_useQwikRouter_goto_OSnb99dm7Ow", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": null, + "ctxKind": "function", + "ctxName": "$", + "captures": true, + "loc": [ + 19896, + 22718 + ], + "paramNames": [ + "path", + "opt" + ], + "captureNames": [ + "actionState", + "navResolver", + "routeInternal", + "routeLocation" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_ErrorBoundary_component_yTCHi5s1o00.mjs (ENTRY POINT)== + +import { Fragment } from "@qwik.dev/core/jsx-runtime"; +import { Slot } from "@qwik.dev/core"; +import { _jsxSorted } from "@qwik.dev/core"; +import { qrl } from "@qwik.dev/core"; +import { useErrorBoundary } from "@qwik.dev/core"; +import { useOnWindow } from "@qwik.dev/core"; +const i_GYhPAutMLGk = ()=>import("./index.qwik.mjs_ErrorBoundary_component_useOnWindow_GYhPAutMLGk.mjs"); +export const ErrorBoundary_component_yTCHi5s1o00 = (props)=>{ + const store = useErrorBoundary(); + useOnWindow('qerror', /*#__PURE__*/ qrl(i_GYhPAutMLGk, "ErrorBoundary_component_useOnWindow_GYhPAutMLGk", [ + store + ])); + if (store.error && props.fallback$) return /* @__PURE__ */ _jsxSorted(Fragment, null, null, props.fallback$(store.error), 1, "0K_0"); + return /* @__PURE__ */ _jsxSorted(Slot, null, null, null, 3, "0K_1"); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";;;;;;;mDAwEiC,CAAC;IAChC,MAAM,QAAQ;IACd,YACE;;;IAKF,IAAI,MAAM,KAAK,IAAI,MAAM,SAAS,EAChC,OAAO,aAAa,GAAG,WAAI,sBAAsB,MAAM,SAAS,CAAC,MAAM,KAAK;IAE9E,OAAO,aAAa,GAAG,WAAI;AAC7B\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "ErrorBoundary_component_yTCHi5s1o00", + "entry": null, + "displayName": "index.qwik.mjs_ErrorBoundary_component", + "hash": "yTCHi5s1o00", + "canonicalFilename": "index.qwik.mjs_ErrorBoundary_component_yTCHi5s1o00", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 1620, + 1932 + ], + "paramNames": [ + "props" + ] +} +*/ +============================= ../node_modules/@qwik.dev/router/index.qwik.mjs_routeActionQrl_action_submit_JY3C42B1B08.mjs (ENTRY POINT)== + +import { _captures } from "@qwik.dev/core"; +import { isServer } from "@qwik.dev/core"; +import { noSerialize } from "@qwik.dev/core"; +export const routeActionQrl_action_submit_JY3C42B1B08 = (input = {})=>{ + const currentAction = _captures[0], id = _captures[1], loc = _captures[2], state = _captures[3]; + if (isServer) throw new Error(`Actions can not be invoked within the server during SSR. +Action.run() can only be called on the browser, for example when a user clicks a button, or submits a form.`); + let data; + let form; + if (input instanceof SubmitEvent) { + form = input.target; + data = new FormData(form); + if ((input.submitter instanceof HTMLInputElement || input.submitter instanceof HTMLButtonElement) && input.submitter.name) { + if (input.submitter.name) data.append(input.submitter.name, input.submitter.value); + } + } else data = input; + return new Promise((resolve)=>{ + if (data instanceof FormData) state.formData = data; + state.submitted = true; + state.isRunning = true; + loc.isNavigating = true; + currentAction.value = { + data, + id, + resolve: noSerialize(resolve) + }; + }).then((_rawProps)=>{ + state.isRunning = false; + state.status = _rawProps.status; + state.value = _rawProps.result; + if (form) { + if (form.getAttribute('data-spa-reset') === 'true') form.reset(); + const detail = { + status: _rawProps.status, + value: _rawProps.result + }; + form.dispatchEvent(new CustomEvent('submitcompleted', { + bubbles: false, + cancelable: false, + composed: false, + detail + })); + } + return { + status: _rawProps.status, + value: _rawProps.result + }; + }); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\";;;wDA2oCqB,CAAC,QAAQ,CAAC,CAAC;;IAC1B,IAAI,UACF,MAAM,IAAI,MAAM,CAAC;2GACkF,CAAC;IAEtG,IAAI;IACJ,IAAI;IACJ,IAAI,iBAAiB,aAAa;QAChC,OAAO,MAAM,MAAM;QACnB,OAAO,IAAI,SAAS;QACpB,IACE,CAAC,MAAM,SAAS,YAAY,oBAC1B,MAAM,SAAS,YAAY,iBAAiB,KAC9C,MAAM,SAAS,CAAC,IAAI,EAEpB;YAAA,IAAI,MAAM,SAAS,CAAC,IAAI,EACtB,KAAK,MAAM,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,MAAM,SAAS,CAAC,KAAK;QACzD;IAEJ,OACE,OAAO;IAET,OAAO,IAAI,QAAQ,CAAC;QAClB,IAAI,gBAAgB,UAClB,MAAM,QAAQ,GAAG;QAEnB,MAAM,SAAS,GAAG;QAClB,MAAM,SAAS,GAAG;QAClB,IAAI,YAAY,GAAG;QACnB,cAAc,KAAK,GAAG;YACpB;YACA;YACA,SAAS,YAAY;QACvB;IACF,GAAG,IAAI,CAAC;QACN,MAAM,SAAS,GAAG;QAClB,MAAM,MAAM,aAFK;QAGjB,MAAM,KAAK,aAHF;QAIT,IAAI,MAAM;YACR,IAAI,KAAK,YAAY,CAAC,sBAAsB,QAC1C,KAAK,KAAK;YAEZ,MAAM,SAAS;gBAAE,MAAM,YARR;gBAQU,KAAK,YARvB;YAQgC;YACvC,KAAK,aAAa,CAChB,IAAI,YAAY,mBAAmB;gBACjC,SAAS;gBACT,YAAY;gBACZ,UAAU;gBACV;YACF;QAEJ;QACA,OAAO;YACL,MAAM,YAnBS;YAoBf,KAAK,YApBE;QAqBT;IACF\"}") +/* +{ + "origin": "../node_modules/@qwik.dev/router/index.qwik.mjs", + "name": "routeActionQrl_action_submit_JY3C42B1B08", + "entry": null, + "displayName": "index.qwik.mjs_routeActionQrl_action_submit", + "hash": "JY3C42B1B08", + "canonicalFilename": "index.qwik.mjs_routeActionQrl_action_submit_JY3C42B1B08", + "path": "../node_modules/@qwik.dev/router", + "extension": "mjs", + "parent": null, + "ctxKind": "function", + "ctxName": "$", + "captures": true, + "loc": [ + 39777, + 41467 + ], + "captureNames": [ + "currentAction", + "id", + "loc", + "state" + ] +} +*/ +== DIAGNOSTICS == + +[] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_router_inline.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_router_inline.snap index ade5c461f1f..c0666cf130d 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_router_inline.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_router_inline.snap @@ -1,46 +1,96 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3325 +assertion_line: 3326 expression: output -snapshot_kind: text --- ==INPUT== -import * as qwikRouterConfig from '@qwik-router-config'; -import swRegister from '@qwik-router-sw-register'; +import { jsx, Fragment, jsxs } from '@qwik.dev/core/jsx-runtime'; import { - _deserializeData, - _fnSignal, - _getContextElement, - _jsxBranch, - _jsxSplit, - _restProps, - _serializeData, - _weakSerialize, - _wrapSignal, - componentQrl, + component$, + useErrorBoundary, + useOnWindow, + $, + Slot, createContextId, - eventQrl, - getLocale, + useContext, implicit$FirstArg, - inlinedQrl, noSerialize, - SkipRender, - Slot, - untrack, - useContext, - useContextProvider, - useLexicalScope, - useOnDocument, + useVisibleTask$, useServerData, useSignal, - useStore, - useStylesQrl, - useTaskQrl, + untrack, + sync$, + isDev, withLocale, + event$, + isServer, + useStyles$, + useStore, + isBrowser, + useContextProvider, + useTask$, + getLocale, + jsx as jsx$1, + SkipRender, + createElement, } from '@qwik.dev/core'; -import { isBrowser, isDev, isServer } from '@qwik.dev/core/build'; -import { z, z as z2 } from 'zod'; +import { + g as getClientNavPath, + s as shouldPreload, + p as preloadRouteBundles, + l as loadClientData, + i as isPromise, + a as isSamePath, + c as createLoaderSignal, + t as toUrl, + b as isSameOrigin, + d as loadRoute, + D as DEFAULT_LOADERS_SERIALIZATION_STRATEGY, + C as CLIENT_DATA_CACHE, + Q as Q_ROUTE, + e as clientNavigate, + f as QFN_KEY, + h as QACTION_KEY, + j as QDATA_KEY, +} from './chunks/routing.qwik.mjs'; +import * as qwikRouterConfig from '@qwik-router-config'; +import { + _getContextContainer, + SerializerSymbol, + _UNINITIALIZED, + _hasStoreEffects, + forceStoreEffects, + _waitUntilRendered, + _getContextHostElement, + _getContextEvent, + _serialize, + _deserialize, + _resolveContextWithoutSequentialScope, +} from '@qwik.dev/core/internal'; +import { _asyncRequestStore } from '@qwik.dev/router/middleware/request-handler'; +import * as v from 'valibot'; +import * as z from 'zod'; +export { z } from 'zod'; +import swRegister from '@qwik-router-sw-register'; +import { renderToStream } from '@qwik.dev/core/server'; +import '@qwik.dev/core/preloader'; +import './chunks/types.qwik.mjs'; + +const ErrorBoundary = component$((props) => { + const store = useErrorBoundary(); + useOnWindow( + 'qerror', + $((e) => { + store.error = e.detail.error; + }) + ); + if (store.error && props.fallback$) { + return /* @__PURE__ */ jsx(Fragment, { children: props.fallback$(store.error) }); + } + return /* @__PURE__ */ jsx(Slot, {}); +}); + const RouteStateContext = /* @__PURE__ */ createContextId('qc-s'); const ContentContext = /* @__PURE__ */ createContextId('qc-c'); const ContentInternalContext = /* @__PURE__ */ createContextId('qc-ic'); @@ -48,176 +98,173 @@ const DocumentHeadContext = /* @__PURE__ */ createContextId('qc-h'); const RouteLocationContext = /* @__PURE__ */ createContextId('qc-l'); const RouteNavigateContext = /* @__PURE__ */ createContextId('qc-n'); const RouteActionContext = /* @__PURE__ */ createContextId('qc-a'); -const RouterOutlet = /* @__PURE__ */ componentQrl( - /* @__PURE__ */ inlinedQrl(() => { - _jsxBranch(); - useOnDocument( - 'qinit', - eventQrl( - /* @__PURE__ */ inlinedQrl(() => { - const POPSTATE_FALLBACK_INITIALIZED = '_qRouterPopstateFallback'; - const CLIENT_HISTORY_INITIALIZED = '_qRouterHistory'; - if (!window[POPSTATE_FALLBACK_INITIALIZED]) { - window[POPSTATE_FALLBACK_INITIALIZED] = () => { - if (!window[CLIENT_HISTORY_INITIALIZED]) location.reload(); - }; - setTimeout(() => { - addEventListener('popstate', window[POPSTATE_FALLBACK_INITIALIZED]); - }, 0); - } - }, 'RouterOutlet_component_useOnDocument_event_KnNE9eL0qfc') - ) +const RoutePreventNavigateContext = /* @__PURE__ */ createContextId('qc-p'); + +const useContent = () => useContext(ContentContext); +const useDocumentHead = () => useContext(DocumentHeadContext); +const useLocation = () => useContext(RouteLocationContext); +const useNavigate = () => useContext(RouteNavigateContext); +const usePreventNavigateQrl = (fn) => { + if (!__EXPERIMENTAL__.preventNavigate) { + throw new Error( + 'usePreventNavigate$ is experimental and must be enabled with `experimental: ["preventNavigate"]` in the `qwikVite` plugin.' ); - const context = useContext(ContentInternalContext); - if (context.value && context.value.length > 0) { - const contentsLen = context.value.length; - let cmp = null; - for (let i = contentsLen - 1; i >= 0; i--) - cmp = _jsxSplit( - context.value[i].default, - { - children: cmp, - }, - 1, - 'k8_0' - ); - return cmp; - } - return SkipRender; - }, 'RouterOutlet_component_AKetNByE5TM') -); -const MODULE_CACHE = /* @__PURE__ */ new WeakMap(); -const CLIENT_DATA_CACHE = /* @__PURE__ */ new Map(); -const QACTION_KEY = 'qaction'; -const toPath = (url) => url.pathname + url.search + url.hash; -const toUrl = (url, baseUrl) => new URL(url, baseUrl.href); -const isSameOrigin = (a, b) => a.origin === b.origin; -const isSamePath = (a, b) => a.pathname + a.search === b.pathname + b.search; -const isSamePathname = (a, b) => a.pathname === b.pathname; -const isSameOriginDifferentPathname = (a, b) => isSameOrigin(a, b) && !isSamePath(a, b); -const getClientDataPath = (pathname, pageSearch, action) => { - let search = pageSearch ?? ''; - if (action) search += (search ? '&' : '?') + QACTION_KEY + '=' + encodeURIComponent(action.id); - return pathname + (pathname.endsWith('/') ? '' : '/') + 'q-data.json' + search; -}; -const getClientNavPath = (props, baseUrl) => { - const href = props.href; - if (typeof href === 'string' && href.trim() !== '' && typeof props.target !== 'string') - try { - const linkUrl = toUrl(href, baseUrl.url); - const currentUrl = toUrl('', baseUrl.url); - if (isSameOrigin(linkUrl, currentUrl)) return toPath(linkUrl); - } catch (e) { - console.error(e); - } - else if (props.reload) return toPath(toUrl('', baseUrl.url)); - return null; -}; -const getPrefetchDataset = (props, clientNavPath, currentLoc) => { - if (props.prefetch === true && clientNavPath) { - const prefetchUrl = toUrl(clientNavPath, currentLoc.url); - if (!isSamePathname(prefetchUrl, toUrl('', currentLoc.url))) return ''; } - return null; + const registerPreventNav = useContext(RoutePreventNavigateContext); + useVisibleTask$(() => registerPreventNav(fn)); }; -const clientNavigate = (win, newUrl, routeNavigate) => { - const currentUrl = win.location; - if (isSameOriginDifferentPathname(currentUrl, newUrl)) { - handleScroll(win, currentUrl, newUrl); - win.history.pushState('', '', toPath(newUrl)); - } - if (!win._qRouterHistory) { - win._qRouterHistory = 1; - win.addEventListener('popstate', () => { - const currentUrl2 = win.location; - const previousUrl = toUrl(routeNavigate.value, currentUrl2); - if (isSameOriginDifferentPathname(currentUrl2, previousUrl)) { - handleScroll(win, previousUrl, currentUrl2); - routeNavigate.value = toPath(new URL(currentUrl2.href)); +const usePreventNavigate$ = implicit$FirstArg(usePreventNavigateQrl); +const useAction = () => useContext(RouteActionContext); +const useQwikRouterEnv = () => noSerialize(useServerData('qwikrouter')); + +const Link = component$((props) => { + const nav = useNavigate(); + const loc = useLocation(); + const originalHref = props.href; + const anchorRef = useSignal(); + const { + onClick$, + prefetch: prefetchProp, + reload, + replaceState, + scroll, + ...linkProps + } = /* @__PURE__ */ (() => props)(); + const clientNavPath = untrack(getClientNavPath, { ...linkProps, reload }, loc); + linkProps.href = clientNavPath || originalHref; + const prefetchData = + (!!clientNavPath && prefetchProp !== false && prefetchProp !== 'js') || void 0; + const prefetch = + prefetchData || + (!!clientNavPath && prefetchProp !== false && untrack(shouldPreload, clientNavPath, loc)); + const handlePrefetch = prefetch + ? $((_, elm) => { + if (navigator.connection?.saveData) { + return; + } + if (elm && elm.href) { + const url = new URL(elm.href); + preloadRouteBundles(url.pathname); + if (elm.hasAttribute('data-prefetch')) { + loadClientData(url, { + preloadRouteBundles: false, + isPrefetch: true, + }); + } + } + }) + : void 0; + const preventDefault = clientNavPath + ? sync$((event) => { + if (!(event.metaKey || event.ctrlKey || event.shiftKey || event.altKey)) { + event.preventDefault(); + } + }) + : void 0; + const handleClientSideNavigation = clientNavPath + ? $((event, elm) => { + if (event.defaultPrevented) { + if (elm.href) { + elm.setAttribute('aria-pressed', 'true'); + nav(elm.href, { forceReload: reload, replaceState, scroll }).then(() => { + elm.removeAttribute('aria-pressed'); + }); + } + } + }) + : void 0; + const handlePreload = $((_, elm) => { + const url = new URL(elm.href); + preloadRouteBundles(url.pathname, 1); + }); + useVisibleTask$(({ track }) => { + track(() => loc.url.pathname); + const handler = linkProps.onQVisible$; + if (handler) { + const event = new CustomEvent('qvisible'); + if (Array.isArray(handler)) { + handler.flat(10).forEach((handler2) => handler2?.(event, anchorRef.value)); + } else { + handler?.(event, anchorRef.value); } - }); - win.removeEventListener('popstate', win._qRouterPopstateFallback); - } -}; -const handleScroll = async (win, previousUrl, newUrl) => { - const doc = win.document; - const newHash = newUrl.hash; - if (isSamePath(previousUrl, newUrl)) { - if (previousUrl.hash !== newHash) { - await domWait(); - if (newHash) scrollToHashId(doc, newHash); - else win.scrollTo(0, 0); } - } else { - if (newHash) - for (let i = 0; i < 24; i++) { - await domWait(); - if (scrollToHashId(doc, newHash)) break; - } - else { - await domWait(); - win.scrollTo(0, 0); + if (!isDev && anchorRef.value) { + handlePrefetch?.(void 0, anchorRef.value); } - } -}; -const domWait = () => new Promise((resolve) => setTimeout(resolve, 12)); -const scrollToHashId = (doc, hash) => { - const elmId = hash.slice(1); - const elm = doc.getElementById(elmId); - if (elm) elm.scrollIntoView(); - return elm; -}; -const dispatchPrefetchEvent = (prefetchData) => { - if (typeof document !== 'undefined') - document.dispatchEvent( - new CustomEvent('qprefetch', { - detail: prefetchData, - }) - ); -}; -const resolveHead = (endpoint, routeLocation, contentModules, locale) => { - const head = createDocumentHead(); - const getData = (loaderOrAction) => { - const id = loaderOrAction.__id; - if (loaderOrAction.__brand === 'server_loader') { - if (!(id in endpoint.loaders)) - throw new Error( - 'You can not get the returned data of a loader that has not been executed for this request.' - ); + }); + return /* @__PURE__ */ jsx('a', { + ref: anchorRef, + ...{ 'q:link': !!clientNavPath }, + ...linkProps, + onClick$: [ + preventDefault, + handlePreload, + // needs to be in between preventDefault and onClick$ to ensure it starts asap. + onClick$, + handleClientSideNavigation, + ], + 'data-prefetch': prefetchData, + onMouseOver$: [linkProps.onMouseOver$, handlePrefetch], + onFocus$: [linkProps.onFocus$, handlePrefetch], + onQVisible$: [], + children: /* @__PURE__ */ jsx(Slot, {}), + }); +}); + +const resolveHead = (endpoint, routeLocation, contentModules, locale, defaults) => + withLocale(locale, () => { + const head = createDocumentHead(defaults); + const getData = (loaderOrAction) => { + const id = loaderOrAction.__id; + if (loaderOrAction.__brand === 'server_loader') { + if (!(id in endpoint.loaders)) { + throw new Error( + 'You can not get the returned data of a loader that has not been executed for this request.' + ); + } + } + const data = endpoint.loaders[id]; + if (isPromise(data)) { + throw new Error('Loaders returning a promise can not be resolved for the head function.'); + } + return data; + }; + const fns = []; + for (const contentModule of contentModules) { + const contentModuleHead = contentModule?.head; + if (contentModuleHead) { + if (typeof contentModuleHead === 'function') { + fns.unshift(contentModuleHead); + } else if (typeof contentModuleHead === 'object') { + resolveDocumentHead(head, contentModuleHead); + } + } } - const data = endpoint.loaders[id]; - if (data instanceof Promise) - throw new Error('Loaders returning a function can not be referred to in the head function.'); - return data; - }; - const headProps = { - head, - withLocale: (fn) => withLocale(locale, fn), - resolveValue: getData, - ...routeLocation, - }; - for (let i = contentModules.length - 1; i >= 0; i--) { - const contentModuleHead = contentModules[i] && contentModules[i].head; - if (contentModuleHead) { - if (typeof contentModuleHead === 'function') - resolveDocumentHead( - head, - withLocale(locale, () => contentModuleHead(headProps)) - ); - else if (typeof contentModuleHead === 'object') resolveDocumentHead(head, contentModuleHead); + if (fns.length) { + const headProps = { + head, + withLocale: (fn) => fn(), + resolveValue: getData, + ...routeLocation, + }; + for (const fn of fns) { + resolveDocumentHead(head, fn(headProps)); + } } - } - return headProps.head; -}; + return head; + }); const resolveDocumentHead = (resolvedHead, updatedHead) => { - if (typeof updatedHead.title === 'string') resolvedHead.title = updatedHead.title; + if (typeof updatedHead.title === 'string') { + resolvedHead.title = updatedHead.title; + } mergeArray(resolvedHead.meta, updatedHead.meta); mergeArray(resolvedHead.links, updatedHead.links); mergeArray(resolvedHead.styles, updatedHead.styles); + mergeArray(resolvedHead.scripts, updatedHead.scripts); Object.assign(resolvedHead.frontmatter, updatedHead.frontmatter); }; const mergeArray = (existingArr, newArr) => { - if (Array.isArray(newArr)) + if (Array.isArray(newArr)) { for (const newItem of newArr) { if (typeof newItem.key === 'string') { const existingIndex = existingArr.findIndex((i) => i.key === newItem.key); @@ -228,462 +275,871 @@ const mergeArray = (existingArr, newArr) => { } existingArr.push(newItem); } + } }; -const createDocumentHead = () => ({ - title: '', - meta: [], - links: [], - styles: [], - frontmatter: {}, +const createDocumentHead = (defaults) => ({ + title: defaults?.title || '', + meta: [...(defaults?.meta || [])], + links: [...(defaults?.links || [])], + styles: [...(defaults?.styles || [])], + scripts: [...(defaults?.scripts || [])], + frontmatter: { ...defaults?.frontmatter }, }); -const loadRoute = async (routes, menus, cacheModules, pathname) => { - if (Array.isArray(routes)) - for (const route of routes) { - const match = route[0].exec(pathname); - if (match) { - const loaders = route[1]; - const params = getPathParams(route[2], match); - const routeBundleNames = route[4]; - const mods = new Array(loaders.length); - const pendingLoads = []; - const menuLoader = getMenuLoader(menus, pathname); - let menu = void 0; - loaders.forEach((moduleLoader, i) => { - loadModule( - moduleLoader, - pendingLoads, - (routeModule) => (mods[i] = routeModule), - cacheModules - ); - }); - loadModule( - menuLoader, - pendingLoads, - (menuModule) => (menu = menuModule?.default), - cacheModules - ); - if (pendingLoads.length > 0) await Promise.all(pendingLoads); - return [params, mods, menu, routeBundleNames]; - } - } - return null; -}; -const loadModule = (moduleLoader, pendingLoads, moduleSetter, cacheModules) => { - if (typeof moduleLoader === 'function') { - const loadedModule = MODULE_CACHE.get(moduleLoader); - if (loadedModule) moduleSetter(loadedModule); - else { - const l = moduleLoader(); - if (typeof l.then === 'function') - pendingLoads.push( - l.then((loadedModule2) => { - if (cacheModules !== false) MODULE_CACHE.set(moduleLoader, loadedModule2); - moduleSetter(loadedModule2); - }) - ); - else if (l) moduleSetter(l); + +const transitionCss = + '@layer qwik{@supports selector(html:active-view-transition-type(type)){html:active-view-transition-type(qwik-navigation){:root{view-transition-name:none}}}@supports not selector(html:active-view-transition-type(type)){:root{view-transition-name:none}}}'; + +function callRestoreScrollOnDocument() { + if (document.__q_scroll_restore__) { + document.__q_scroll_restore__(); + document.__q_scroll_restore__ = void 0; + } +} +const restoreScroll = (type, toUrl, fromUrl, scroller, scrollState) => { + if (type === 'popstate' && scrollState) { + scroller.scrollTo(scrollState.x, scrollState.y); + } else if (type === 'link' || type === 'form') { + if (!hashScroll(toUrl, fromUrl)) { + scroller.scrollTo(0, 0); } } }; -const getMenuLoader = (menus, pathname) => { - if (menus) { - pathname = pathname.endsWith('/') ? pathname : pathname + '/'; - const menu = menus.find( - (m) => m[0] === pathname || pathname.startsWith(m[0] + (pathname.endsWith('/') ? '' : '/')) - ); - if (menu) return menu[1]; +const hashScroll = (toUrl, fromUrl) => { + const elmId = toUrl.hash.slice(1); + const elm = elmId && document.getElementById(elmId); + if (elm) { + elm.scrollIntoView(); + return true; + } else if (!elm && toUrl.hash && isSamePath(toUrl, fromUrl)) { + return true; } + return false; }; -const getPathParams = (paramNames, match) => { - const params = {}; - if (paramNames) - for (let i = 0; i < paramNames.length; i++) { - const param = match?.[i + 1] ?? ''; - const v = param.endsWith('/') ? param.slice(0, -1) : param; - params[paramNames[i]] = decodeURIComponent(v); - } - return params; +const currentScrollState = (elm) => { + return { + x: elm.scrollLeft, + y: elm.scrollTop, + w: Math.max(elm.scrollWidth, elm.clientWidth), + h: Math.max(elm.scrollHeight, elm.clientHeight), + }; }; -const loadClientData = async (url, element, clearCache, action) => { - const pagePathname = url.pathname; - const pageSearch = url.search; - const clientDataPath = getClientDataPath(pagePathname, pageSearch, action); - let qData = void 0; - if (!action) qData = CLIENT_DATA_CACHE.get(clientDataPath); - dispatchPrefetchEvent({ - links: [pagePathname], - }); - if (!qData) { - const options = getFetchOptions(action); - if (action) action.data = void 0; - qData = fetch(clientDataPath, options).then((rsp) => { - const redirectedURL = new URL(rsp.url); - if (redirectedURL.origin !== location.origin || !isQDataJson(redirectedURL.pathname)) { - location.href = redirectedURL.href; +const getScrollHistory = () => { + const state = history.state; + return state?._qRouterScroll; +}; +const saveScrollHistory = (scrollState) => { + const state = history.state || {}; + state._qRouterScroll = scrollState; + history.replaceState(state, ''); +}; + +const spaInit = event$((_, el) => { + if (!window._qRouterSPA && !window._qRouterInitPopstate) { + const currentPath = location.pathname + location.search; + const checkAndScroll = (scrollState) => { + if (scrollState) { + window.scrollTo(scrollState.x, scrollState.y); + } + }; + const currentScrollState = () => { + const elm = document.documentElement; + return { + x: elm.scrollLeft, + y: elm.scrollTop, + w: Math.max(elm.scrollWidth, elm.clientWidth), + h: Math.max(elm.scrollHeight, elm.clientHeight), + }; + }; + const saveScrollState = (scrollState) => { + const state = history.state || {}; + state._qRouterScroll = scrollState || currentScrollState(); + history.replaceState(state, ''); + }; + saveScrollState(); + window._qRouterInitPopstate = () => { + if (window._qRouterSPA) { return; } - if ((rsp.headers.get('content-type') || '').includes('json')) - return rsp.text().then((text) => { - const clientData = _deserializeData(text, element); - if (!clientData) { - location.href = url.href; - return; + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + if (currentPath !== location.pathname + location.search) { + const getContainer = (el2) => + el2.closest('[q\\:container]:not([q\\:container=html]):not([q\\:container=text])'); + const container = getContainer(el); + const domContainer = container.qContainer; + const hostElement = domContainer.vNodeLocate(el); + const nav = domContainer?.resolveContext(hostElement, { + id: 'qc--n', + }); + if (nav) { + nav(location.href, { type: 'popstate' }); + } else { + location.reload(); + } + } else { + if (history.scrollRestoration === 'manual') { + const scrollState = history.state?._qRouterScroll; + checkAndScroll(scrollState); + window._qRouterScrollEnabled = true; + } + } + }; + if (!window._qRouterHistoryPatch) { + window._qRouterHistoryPatch = true; + const pushState = history.pushState; + const replaceState = history.replaceState; + const prepareState = (state) => { + if (state === null || typeof state === 'undefined') { + state = {}; + } else if (state?.constructor !== Object) { + state = { _data: state }; + if (isDev) { + console.warn( + 'In a Qwik SPA context, `history.state` is used to store scroll state. Direct calls to `pushState()` and `replaceState()` must supply an actual Object type. We need to be able to automatically attach the scroll state to your state object. A new state object has been created, your data has been moved to: `history.state._data`' + ); } - if (clearCache) CLIENT_DATA_CACHE.delete(clientDataPath); - if (clientData.redirect) location.href = clientData.redirect; - else if (action) { - const actionData = clientData.loaders[action.id]; - action.resolve({ - status: rsp.status, - result: actionData, - }); + } + state._qRouterScroll = state._qRouterScroll || currentScrollState(); + return state; + }; + history.pushState = (state, title, url) => { + state = prepareState(state); + return pushState.call(history, state, title, url); + }; + history.replaceState = (state, title, url) => { + state = prepareState(state); + return replaceState.call(history, state, title, url); + }; + } + window._qRouterInitAnchors = (event) => { + if (window._qRouterSPA || event.defaultPrevented) { + return; + } + const target = event.target.closest('a[href]'); + if (target && !target.hasAttribute('preventdefault:click')) { + const href = target.getAttribute('href'); + const prev = new URL(location.href); + const dest = new URL(href, prev); + const sameOrigin = dest.origin === prev.origin; + const samePath = dest.pathname + dest.search === prev.pathname + prev.search; + if (sameOrigin && samePath) { + event.preventDefault(); + if (dest.href !== prev.href) { + history.pushState(null, '', dest); } - return clientData; - }); - else { - location.href = url.href; - return void 0; + if (!dest.hash) { + if (dest.href.endsWith('#')) { + window.scrollTo(0, 0); + } else { + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + saveScrollState({ ...currentScrollState(), x: 0, y: 0 }); + location.reload(); + } + } else { + const elmId = dest.hash.slice(1); + const elm = document.getElementById(elmId); + if (elm) { + elm.scrollIntoView(); + } + } + } } - }); - if (!action) CLIENT_DATA_CACHE.set(clientDataPath, qData); - } - return qData.then((v) => { - if (!v) CLIENT_DATA_CACHE.delete(clientDataPath); - return v; - }); -}; -const getFetchOptions = (action) => { - const actionData = action?.data; - if (!actionData) return void 0; - if (actionData instanceof FormData) - return { - method: 'POST', - body: actionData, }; - else - return { - method: 'POST', - body: JSON.stringify(actionData), - headers: { - 'Content-Type': 'application/json, charset=UTF-8', - }, + window._qRouterInitVisibility = () => { + if ( + !window._qRouterSPA && + window._qRouterScrollEnabled && + document.visibilityState === 'hidden' + ) { + saveScrollState(); + } }; + window._qRouterInitScroll = () => { + if (window._qRouterSPA || !window._qRouterScrollEnabled) { + return; + } + clearTimeout(window._qRouterScrollDebounce); + window._qRouterScrollDebounce = setTimeout(() => { + saveScrollState(); + window._qRouterScrollDebounce = void 0; + }, 200); + }; + window._qRouterScrollEnabled = true; + setTimeout(() => { + window.addEventListener('popstate', window._qRouterInitPopstate); + window.addEventListener('scroll', window._qRouterInitScroll, { passive: true }); + document.addEventListener('click', window._qRouterInitAnchors); + if (!window.navigation) { + document.addEventListener('visibilitychange', window._qRouterInitVisibility, { + passive: true, + }); + } + }, 0); + } +}); + +const startViewTransition = (params) => { + if (!params.update) { + return; + } + if ('startViewTransition' in document) { + let transition; + try { + transition = document.startViewTransition(params); + } catch { + transition = document.startViewTransition(params.update); + } + const event = new CustomEvent('qviewtransition', { detail: transition }); + document.dispatchEvent(event); + return transition; + } else { + params.update?.(); + } }; -const isQDataJson = (pathname) => { - return pathname.endsWith(QDATA_JSON); -}; -const QDATA_JSON = '/q-data.json'; -const useContent = () => useContext(ContentContext); -const useDocumentHead = () => useContext(DocumentHeadContext); -const useLocation = () => useContext(RouteLocationContext); -const useNavigate = () => useContext(RouteNavigateContext); -const useAction = () => useContext(RouteActionContext); -const useQwikRouterEnv = () => noSerialize(useServerData('qwikrouter')); -const QwikRouterProvider = /* @__PURE__ */ componentQrl( - /* @__PURE__ */ inlinedQrl((props) => { - useStylesQrl( - /* @__PURE__ */ inlinedQrl( - `:root{view-transition-name: none}`, - 'QwikRouterProvider_component_useStyles_RPDJAz33WLA' - ) + +const QWIK_CITY_SCROLLER = '_qCityScroller'; +const QWIK_ROUTER_SCROLLER = '_qRouterScroller'; +const preventNav = {}; +const internalState = { navCount: 0 }; +const useQwikRouter = (props) => { + if (!isServer) { + throw new Error( + 'useQwikRouter can only run during SSR on the server. If you are seeing this, it means you are re-rendering the root of your application. Fix that or use the component around the root of your application.' ); - const env = useQwikRouterEnv(); - if (!env?.params) throw new Error(`Missing Qwik Router Env Data`); - const urlEnv = useServerData('url'); - if (!urlEnv) throw new Error(`Missing Qwik URL Env Data`); - const url = new URL(urlEnv); - const routeLocation = useStore( - { - url, - params: env.params, - isNavigating: false, - }, - { - deep: false, - } + } + useStyles$(transitionCss); + const env = useQwikRouterEnv(); + if (!env?.params) { + throw new Error( + `Missing Qwik Router Env Data for help visit https://github.com/QwikDev/qwik/issues/6237` ); - const loaderState = _weakSerialize( - useStore(env.response.loaders, { - deep: false, - }) + } + const urlEnv = useServerData('url'); + if (!urlEnv) { + throw new Error(`Missing Qwik URL Env Data`); + } + const serverHead = useServerData('documentHead'); + if ( + env.ev.originalUrl.pathname !== env.ev.url.pathname && + !__EXPERIMENTAL__.enableRequestRewrite + ) { + throw new Error( + `enableRequestRewrite is an experimental feature and is not enabled. Please enable the feature flag by adding \`experimental: ["enableRequestRewrite"]\` to your qwikVite plugin options.` ); - const navPath = useSignal(toPath(url)); - const documentHead = useStore(createDocumentHead); - const content = useStore({ - headings: void 0, - menu: void 0, - }); - const contentInternal = useSignal(); - const currentActionId = env.response.action; - const currentAction = currentActionId ? env.response.loaders[currentActionId] : void 0; - const actionState = useSignal( - currentAction - ? { - id: currentActionId, - data: env.response.formData, - output: { - result: currentAction, - status: env.response.status, - }, - } - : void 0 + } + const url = new URL(urlEnv); + const routeLocationTarget = { + url, + params: env.params, + isNavigating: false, + prevUrl: void 0, + }; + const routeLocation = useStore(routeLocationTarget, { deep: false }); + const navResolver = {}; + const container = _getContextContainer(); + const getSerializationStrategy = (loaderId) => { + return ( + env.response.loadersSerializationStrategy.get(loaderId) || + DEFAULT_LOADERS_SERIALIZATION_STRATEGY + ); + }; + const loadersObject = {}; + const loaderState = {}; + for (const [key, value] of Object.entries(env.response.loaders)) { + loadersObject[key] = value; + loaderState[key] = createLoaderSignal( + loadersObject, + key, + url, + getSerializationStrategy(key), + container ); - const goto = eventQrl( - /* @__PURE__ */ inlinedQrl( - async (path, forceReload) => { - const [actionState2, navPath2, routeLocation2] = useLexicalScope(); - if (path === void 0) { - path = navPath2.value; - navPath2.value = ''; - } else if (forceReload) navPath2.value = ''; - const resolvedURL = new URL(path, routeLocation2.url); - path = toPath(resolvedURL); - if (!forceReload && navPath2.value === path) return; - navPath2.value = path; - if (isBrowser) { - loadClientData(resolvedURL, _getContextElement()); - loadRoute( - qwikRouterConfig.routes, - qwikRouterConfig.menus, - qwikRouterConfig.cacheModules, - resolvedURL.pathname + } + loadersObject[SerializerSymbol] = (obj) => { + const loadersSerializationObject = {}; + for (const [k, v] of Object.entries(obj)) { + loadersSerializationObject[k] = getSerializationStrategy(k) === 'always' ? v : _UNINITIALIZED; + } + return loadersSerializationObject; + }; + const routeInternal = useSignal({ + type: 'initial', + dest: url, + scroll: true, + }); + const documentHead = useStore(() => createDocumentHead(serverHead)); + const content = useStore({ + headings: void 0, + menu: void 0, + }); + const contentInternal = useSignal(); + const currentActionId = env.response.action; + const currentAction = currentActionId ? env.response.loaders[currentActionId] : void 0; + const actionState = useSignal( + currentAction + ? { + id: currentActionId, + data: env.response.formData, + output: { + result: currentAction, + status: env.response.status, + }, + } + : void 0 + ); + const registerPreventNav = $((fn$) => { + if (!isBrowser) { + return; + } + preventNav.$handler$ ||= (event) => { + internalState.navCount++; + if (!preventNav.$cbs$) { + return; + } + const prevents = [...preventNav.$cbs$.values()].map((cb) => + cb.resolved ? cb.resolved() : cb() + ); + if (prevents.some(Boolean)) { + event.preventDefault(); + event.returnValue = true; + } + }; + (preventNav.$cbs$ ||= /* @__PURE__ */ new Set()).add(fn$); + fn$.resolve(); + window.addEventListener('beforeunload', preventNav.$handler$); + return () => { + if (preventNav.$cbs$) { + preventNav.$cbs$.delete(fn$); + if (!preventNav.$cbs$.size) { + preventNav.$cbs$ = void 0; + window.removeEventListener('beforeunload', preventNav.$handler$); + } + } + }; + }); + const goto = $(async (path, opt) => { + const { + type = 'link', + forceReload = path === void 0, + // Hack for nav() because this API is already set. + replaceState = false, + scroll = true, + } = typeof opt === 'object' ? opt : { forceReload: opt }; + internalState.navCount++; + if (isBrowser && type === 'link' && routeInternal.value.type === 'initial') { + const url2 = new URL(window.location.href); + routeInternal.value.dest = url2; + routeLocation.url = url2; + } + const lastDest = routeInternal.value.dest; + const dest = + path === void 0 ? lastDest : typeof path === 'number' ? path : toUrl(path, routeLocation.url); + if ( + preventNav.$cbs$ && + (forceReload || + typeof dest === 'number' || + !isSamePath(dest, lastDest) || + !isSameOrigin(dest, lastDest)) + ) { + const ourNavId = internalState.navCount; + const prevents = await Promise.all([...preventNav.$cbs$.values()].map((cb) => cb(dest))); + if (ourNavId !== internalState.navCount || prevents.some(Boolean)) { + if (ourNavId === internalState.navCount && type === 'popstate') { + history.pushState(null, '', lastDest); + } + return; + } + } + if (typeof dest === 'number') { + if (isBrowser) { + history.go(dest); + } + return; + } + if (!isSameOrigin(dest, lastDest)) { + if (isBrowser) { + location.href = dest.href; + } + return; + } + if (!forceReload && isSamePath(dest, lastDest)) { + if (isBrowser) { + if (type === 'link' && dest.href !== location.href) { + history.pushState(null, '', dest); + } + let scroller = document.getElementById(QWIK_ROUTER_SCROLLER); + if (!scroller) { + scroller = document.getElementById(QWIK_CITY_SCROLLER); + if (scroller && isDev) { + console.warn( + `Please update your scroller ID to "${QWIK_ROUTER_SCROLLER}" as "${QWIK_CITY_SCROLLER}" is deprecated and will be removed in V3` ); } - actionState2.value = void 0; - routeLocation2.isNavigating = true; - }, - 'QwikRouterProvider_component_goto_event_cBcjROynRVg', - [actionState, navPath, routeLocation] - ) - ); - useContextProvider(ContentContext, content); - useContextProvider(ContentInternalContext, contentInternal); - useContextProvider(DocumentHeadContext, documentHead); - useContextProvider(RouteLocationContext, routeLocation); - useContextProvider(RouteNavigateContext, goto); - useContextProvider(RouteStateContext, loaderState); - useContextProvider(RouteActionContext, actionState); - useTaskQrl( - /* @__PURE__ */ inlinedQrl( - ({ track }) => { - const [ - actionState2, - content2, - contentInternal2, - documentHead2, - env2, - loaderState2, - navPath2, - props2, - routeLocation2, - url2, - ] = useLexicalScope(); - async function run() { - const [path, action] = track(() => [navPath2.value, actionState2.value]); - const locale = getLocale(''); - let trackUrl; - let clientPageData; - let loadedRoute = null; - if (isServer) { - trackUrl = new URL(path, routeLocation2.url); - loadedRoute = env2.loadedRoute; - clientPageData = env2.response; - } else { - trackUrl = new URL(path, location); - if (trackUrl.pathname.endsWith('/')) { - if (!qwikRouterConfig.trailingSlash) - trackUrl.pathname = trackUrl.pathname.slice(0, -1); - } else if (qwikRouterConfig.trailingSlash) trackUrl.pathname += '/'; - let loadRoutePromise = loadRoute( - qwikRouterConfig.routes, - qwikRouterConfig.menus, - qwikRouterConfig.cacheModules, - trackUrl.pathname - ); - const element = _getContextElement(); - const pageData = (clientPageData = await loadClientData( - trackUrl, - element, - true, - action - )); - if (!pageData) { - navPath2.untrackedValue = toPath(trackUrl); - return; - } - const newHref = pageData.href; - const newURL = new URL(newHref, trackUrl.href); - if (newURL.pathname !== trackUrl.pathname) { - trackUrl = newURL; - loadRoutePromise = loadRoute( - qwikRouterConfig.routes, - qwikRouterConfig.menus, - qwikRouterConfig.cacheModules, - trackUrl.pathname + } + if (!scroller) { + scroller = document.documentElement; + } + restoreScroll(type, dest, new URL(location.href), scroller, getScrollHistory()); + if (type === 'popstate') { + window._qRouterScrollEnabled = true; + } + } + return; + } + routeInternal.value = { + type, + dest, + forceReload, + replaceState, + scroll, + }; + if (isBrowser) { + loadClientData(dest); + loadRoute( + qwikRouterConfig.routes, + qwikRouterConfig.menus, + qwikRouterConfig.cacheModules, + dest.pathname + ); + } + actionState.value = void 0; + routeLocation.isNavigating = true; + return new Promise((resolve) => { + navResolver.r = resolve; + }); + }); + useContextProvider(ContentContext, content); + useContextProvider(ContentInternalContext, contentInternal); + useContextProvider(DocumentHeadContext, documentHead); + useContextProvider(RouteLocationContext, routeLocation); + useContextProvider(RouteNavigateContext, goto); + useContextProvider(RouteStateContext, loaderState); + useContextProvider(RouteActionContext, actionState); + useContextProvider(RoutePreventNavigateContext, registerPreventNav); + useTask$(({ track }) => { + async function run() { + const navigation = track(routeInternal); + const action = track(actionState); + const locale = getLocale(''); + const prevUrl = routeLocation.url; + const navType = action ? 'form' : navigation.type; + const replaceState = navigation.replaceState; + let trackUrl; + let clientPageData; + let loadedRoute = null; + let container2; + if (isServer) { + trackUrl = new URL(navigation.dest, routeLocation.url); + loadedRoute = env.loadedRoute; + clientPageData = env.response; + } else { + trackUrl = new URL(navigation.dest, location); + if (trackUrl.pathname.endsWith('/')) { + if (globalThis.__NO_TRAILING_SLASH__) { + trackUrl.pathname = trackUrl.pathname.slice(0, -1); + } + } else if (!globalThis.__NO_TRAILING_SLASH__) { + trackUrl.pathname += '/'; + } + let loadRoutePromise = loadRoute( + qwikRouterConfig.routes, + qwikRouterConfig.menus, + qwikRouterConfig.cacheModules, + trackUrl.pathname + ); + container2 = _getContextContainer(); + const pageData = (clientPageData = await loadClientData(trackUrl, { + action, + clearCache: true, + })); + if (!pageData) { + routeInternal.untrackedValue = { type: navType, dest: trackUrl }; + return; + } + const newHref = pageData.href; + const newURL = new URL(newHref, trackUrl); + if (!isSamePath(newURL, trackUrl)) { + if (!pageData.isRewrite) { + trackUrl = newURL; + } + loadRoutePromise = loadRoute( + qwikRouterConfig.routes, + qwikRouterConfig.menus, + qwikRouterConfig.cacheModules, + newURL.pathname + // Load the actual required path. + ); + } + try { + loadedRoute = await loadRoutePromise; + } catch (e) { + console.error(e); + window.location.href = newHref; + return; + } + } + if (loadedRoute) { + const [routeName, params, mods, menu] = loadedRoute; + const contentModules = mods; + const pageModule = contentModules[contentModules.length - 1]; + if (navigation.dest.search && !!isSamePath(trackUrl, prevUrl)) { + trackUrl.search = navigation.dest.search; + } + let shouldForcePrevUrl = false; + let shouldForceUrl = false; + let shouldForceParams = false; + if (!isSamePath(trackUrl, prevUrl)) { + if (_hasStoreEffects(routeLocation, 'prevUrl')) { + shouldForcePrevUrl = true; + } + routeLocationTarget.prevUrl = prevUrl; + } + if (routeLocationTarget.url !== trackUrl) { + if (_hasStoreEffects(routeLocation, 'url')) { + shouldForceUrl = true; + } + routeLocationTarget.url = trackUrl; + } + if (routeLocationTarget.params !== params) { + if (_hasStoreEffects(routeLocation, 'params')) { + shouldForceParams = true; + } + routeLocationTarget.params = params; + } + routeInternal.untrackedValue = { type: navType, dest: trackUrl }; + const resolvedHead = resolveHead( + clientPageData, + routeLocation, + contentModules, + locale, + serverHead + ); + content.headings = pageModule.headings; + content.menu = menu; + contentInternal.untrackedValue = noSerialize(contentModules); + documentHead.links = resolvedHead.links; + documentHead.meta = resolvedHead.meta; + documentHead.styles = resolvedHead.styles; + documentHead.scripts = resolvedHead.scripts; + documentHead.title = resolvedHead.title; + documentHead.frontmatter = resolvedHead.frontmatter; + if (isBrowser) { + let scrollState; + if (navType === 'popstate') { + scrollState = getScrollHistory(); + } + const scroller = + document.getElementById(QWIK_ROUTER_SCROLLER) ?? document.documentElement; + if ( + (navigation.scroll && + (!navigation.forceReload || !isSamePath(trackUrl, prevUrl)) && + (navType === 'link' || navType === 'popstate')) || // Action might have responded with a redirect. + (navType === 'form' && !isSamePath(trackUrl, prevUrl)) + ) { + document.__q_scroll_restore__ = () => + restoreScroll(navType, trackUrl, prevUrl, scroller, scrollState); + } + const loaders = clientPageData?.loaders; + if (loaders) { + const container3 = _getContextContainer(); + for (const [key, value] of Object.entries(loaders)) { + const signal = loaderState[key]; + const awaitedValue = await value; + loadersObject[key] = awaitedValue; + if (!signal) { + loaderState[key] = createLoaderSignal( + loadersObject, + key, + trackUrl, + DEFAULT_LOADERS_SERIALIZATION_STRATEGY, + container3 ); + } else { + signal.invalidate(); } - loadedRoute = await loadRoutePromise; } - if (loadedRoute) { - const [params, mods, menu] = loadedRoute; - const contentModules = mods; - const pageModule = contentModules[contentModules.length - 1]; - routeLocation2.url = trackUrl; - routeLocation2.params = { - ...params, + } + CLIENT_DATA_CACHE.clear(); + if (!window._qRouterSPA) { + window._qRouterSPA = true; + history.scrollRestoration = 'manual'; + window.addEventListener('popstate', () => { + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + goto(location.href, { + type: 'popstate', + }); + }); + window.removeEventListener('popstate', window._qRouterInitPopstate); + window._qRouterInitPopstate = void 0; + if (!window._qRouterHistoryPatch) { + window._qRouterHistoryPatch = true; + const pushState = history.pushState; + const replaceState2 = history.replaceState; + const prepareState = (state) => { + if (state === null || typeof state === 'undefined') { + state = {}; + } else if (state?.constructor !== Object) { + state = { _data: state }; + if (isDev) { + console.warn( + 'In a Qwik SPA context, `history.state` is used to store scroll state. Direct calls to `pushState()` and `replaceState()` must supply an actual Object type. We need to be able to automatically attach the scroll state to your state object. A new state object has been created, your data has been moved to: `history.state._data`' + ); + } + } + state._qRouterScroll = state._qRouterScroll || currentScrollState(scroller); + return state; }; - navPath2.untrackedValue = toPath(trackUrl); - const resolvedHead = resolveHead( - clientPageData, - routeLocation2, - contentModules, - locale - ); - content2.headings = pageModule.headings; - content2.menu = menu; - contentInternal2.value = noSerialize(contentModules); - documentHead2.links = resolvedHead.links; - documentHead2.meta = resolvedHead.meta; - documentHead2.styles = resolvedHead.styles; - documentHead2.title = resolvedHead.title; - documentHead2.frontmatter = resolvedHead.frontmatter; - if (isBrowser) { - if ( - (props2.viewTransition ?? true) && - isSameOriginDifferentPathname(window.location, url2) - ) - document.__q_view_transition__ = true; - const loaders = clientPageData?.loaders; - if (loaders) Object.assign(loaderState2, loaders); - CLIENT_DATA_CACHE.clear(); - clientNavigate(window, trackUrl, navPath2); - routeLocation2.isNavigating = false; + history.pushState = (state, title, url2) => { + state = prepareState(state); + return pushState.call(history, state, title, url2); + }; + history.replaceState = (state, title, url2) => { + state = prepareState(state); + return replaceState2.call(history, state, title, url2); + }; + } + document.addEventListener('click', (event) => { + if (event.defaultPrevented) { + return; } + const target = event.target.closest('a[href]'); + if (target && !target.hasAttribute('preventdefault:click')) { + const href = target.getAttribute('href'); + const prev = new URL(location.href); + const dest = new URL(href, prev); + if (isSameOrigin(dest, prev) && isSamePath(dest, prev)) { + event.preventDefault(); + if (!dest.hash && !dest.href.endsWith('#')) { + if (dest.href !== prev.href) { + history.pushState(null, '', dest); + } + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + saveScrollHistory({ + ...currentScrollState(scroller), + x: 0, + y: 0, + }); + location.reload(); + return; + } + goto(target.getAttribute('href')); + } + } + }); + document.removeEventListener('click', window._qRouterInitAnchors); + window._qRouterInitAnchors = void 0; + if (!window.navigation) { + document.addEventListener( + 'visibilitychange', + () => { + if ( + (window._qRouterScrollEnabled || window._qCityScrollEnabled) && + document.visibilityState === 'hidden' + ) { + if (window._qCityScrollEnabled) { + console.warn( + '"_qCityScrollEnabled" is deprecated. Use "_qRouterScrollEnabled" instead.' + ); + } + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + } + }, + { passive: true } + ); + document.removeEventListener('visibilitychange', window._qRouterInitVisibility); + window._qRouterInitVisibility = void 0; } + window.addEventListener( + 'scroll', + () => { + if (!window._qRouterScrollEnabled && !window._qCityScrollEnabled) { + return; + } + clearTimeout(window._qRouterScrollDebounce); + window._qRouterScrollDebounce = setTimeout(() => { + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + window._qRouterScrollDebounce = void 0; + }, 200); + }, + { passive: true } + ); + removeEventListener('scroll', window._qRouterInitScroll); + window._qRouterInitScroll = void 0; + spaInit.resolve(); } - const promise = run(); - if (isServer) return promise; - else return; - }, - 'QwikRouterProvider_component_useTask_02wMImzEAbk', - [ - actionState, - content, - contentInternal, - documentHead, - env, - loaderState, - navPath, - props, - routeLocation, - url, - ] - ) - ); - return /* @__PURE__ */ _jsxSplit(Slot, null, 3, 'qY_0'); - }, 'QwikRouterProvider_component_TxCFOy819ag') -); -const QwikRouterMockProvider = /* @__PURE__ */ componentQrl( - /* @__PURE__ */ inlinedQrl((props) => { - const urlEnv = props.url ?? 'http://localhost/'; - const url = new URL(urlEnv); - const routeLocation = useStore( - { - url, - params: props.params ?? {}, - isNavigating: false, - }, - { - deep: false, - } - ); - const loaderState = useSignal({}); - const goto = /* @__PURE__ */ inlinedQrl(async (path) => { - throw new Error('Not implemented'); - }, 'QwikRouterMockProvider_component_goto_BUbtvTyvVRE'); - const documentHead = useStore(createDocumentHead, { - deep: false, - }); - const content = useStore( - { - headings: void 0, - menu: void 0, - }, - { - deep: false, + if (navType !== 'popstate') { + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + } + const navigate = () => { + clientNavigate(window, navType, prevUrl, trackUrl, replaceState); + contentInternal.trigger(); + return _waitUntilRendered(container2); + }; + const _waitNextPage = () => { + if (isServer || props?.viewTransition === false) { + return navigate(); + } else { + const viewTransition = startViewTransition({ + update: navigate, + types: ['qwik-navigation'], + }); + if (!viewTransition) { + return Promise.resolve(); + } + return viewTransition.ready; + } + }; + _waitNextPage() + .catch((err) => { + navigate(); + throw err; + }) + .finally(() => { + container2.element.setAttribute?.(Q_ROUTE, routeName); + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + window._qRouterScrollEnabled = true; + if (isBrowser) { + callRestoreScrollOnDocument(); + } + if (shouldForcePrevUrl) { + forceStoreEffects(routeLocation, 'prevUrl'); + } + if (shouldForceUrl) { + forceStoreEffects(routeLocation, 'url'); + } + if (shouldForceParams) { + forceStoreEffects(routeLocation, 'params'); + } + routeLocation.isNavigating = false; + navResolver.r?.(); + }); + } } - ); - const contentInternal = useSignal(); - useContextProvider(ContentContext, content); - useContextProvider(ContentInternalContext, contentInternal); - useContextProvider(DocumentHeadContext, documentHead); - useContextProvider(RouteLocationContext, routeLocation); - useContextProvider(RouteNavigateContext, goto); - useContextProvider(RouteStateContext, loaderState); - return /* @__PURE__ */ _jsxSplit(Slot, null, 3, 'qY_1'); - }, 'QwikRouterMockProvider_component_WmYC5H00wtI') -); -const Link = /* @__PURE__ */ componentQrl( - /* @__PURE__ */ inlinedQrl((props) => { - const nav = useNavigate(); - const loc = useLocation(); - const linkProps = { - ...props, - }; - const clientNavPath = untrack(() => getClientNavPath(linkProps, loc)); - const prefetchDataset = untrack(() => getPrefetchDataset(props, clientNavPath, loc)); - const reload = !!linkProps.reload; - linkProps['preventdefault:click'] = !!clientNavPath; - linkProps.href = clientNavPath || props.href; - const event = eventQrl( - /* @__PURE__ */ inlinedQrl( - (ev, elm) => prefetchLinkResources(elm, ev.type === 'qvisible'), - 'Link_component_event_event_5g4B0Gd1Wck' - ) - ); - return /* @__PURE__ */ _jsxSplit( - 'a', - { - ...linkProps, - 'data-prefetch': prefetchDataset, - children: /* @__PURE__ */ _jsxSplit(Slot, null, null, 3, 'AD_0'), - onClick$: /* @__PURE__ */ inlinedQrl( - (_, elm) => { - const [nav2, reload2] = useLexicalScope(); - if (elm.href) nav2(elm.href, reload2); - }, - 'Link_component_a_onClick_kzjavhDI3L0', - [nav, reload] - ), - onMouseOver$: event, - onFocus$: event, - onQVisible$: event, - }, - null, - 0, - 'AD_1' - ); - }, 'Link_component_8gdLBszqbaM') -); -const prefetchLinkResources = (elm, isOnVisible) => { - if (elm && elm.href && elm.hasAttribute('data-prefetch')) { - if (!windowInnerWidth) windowInnerWidth = innerWidth; - if (!isOnVisible || (isOnVisible && windowInnerWidth < 520)) - loadClientData(new URL(elm.href), elm); - } + } + if (isServer) { + return run(); + } else { + run(); + } + }); }; -let windowInnerWidth = 0; -const ServiceWorkerRegister = (props) => - _jsxSplit( - 'script', - null, +const QwikRouterProvider = component$((props) => { + useQwikRouter(props); + return /* @__PURE__ */ jsx(Slot, {}); +}); +const QwikCityProvider = QwikRouterProvider; +const useQwikMockRouter = (props) => { + const urlEnv = props.url ?? 'http://localhost/'; + const url = new URL(urlEnv); + const routeLocation = useStore( { - nonce: _wrapSignal(props, 'nonce'), - dangerouslySetInnerHTML: swRegister, + url, + params: props.params ?? {}, + isNavigating: false, + prevUrl: void 0, + }, + { deep: false } + ); + const loadersData = props.loaders?.reduce((acc, { loader, data }) => { + acc[loader.__id] = data; + return acc; + }, {}); + const loaderState = useStore(loadersData ?? {}, { deep: false }); + const goto = + props.goto ?? + $(async () => { + console.warn('QwikRouterMockProvider: goto not provided'); + }); + const documentHead = useStore(createDocumentHead, { deep: false }); + const content = useStore( + { + headings: void 0, + menu: void 0, }, - 3, - '1Z_0' + { deep: false } ); + const contentInternal = useSignal(); + const actionState = useSignal(); + useContextProvider(ContentContext, content); + useContextProvider(ContentInternalContext, contentInternal); + useContextProvider(DocumentHeadContext, documentHead); + useContextProvider(RouteLocationContext, routeLocation); + useContextProvider(RouteNavigateContext, goto); + useContextProvider(RouteStateContext, loaderState); + useContextProvider(RouteActionContext, actionState); + const actionsMocks = props.actions?.reduce((acc, { action, handler }) => { + acc[action.__id] = handler; + return acc; + }, {}); + useTask$(async ({ track }) => { + const action = track(actionState); + if (!action?.resolve) { + return; + } + const mock = actionsMocks?.[action.id]; + if (mock) { + const actionResult = await mock(action.data); + action.resolve(actionResult); + } + }); +}; +const QwikRouterMockProvider = component$((props) => { + useQwikMockRouter(props); + return /* @__PURE__ */ jsx(Slot, {}); +}); +const QwikCityMockProvider = QwikRouterMockProvider; + +const RouterOutlet = component$(() => { + const serverData = useServerData('containerAttributes'); + if (!serverData) { + throw new Error('PrefetchServiceWorker component must be rendered on the server.'); + } + const internalContext = useContext(ContentInternalContext); + const contents = internalContext.value; + if (contents && contents.length > 0) { + const contentsLen = contents.length; + let cmp = null; + for (let i = contentsLen - 1; i >= 0; i--) { + if (contents[i].default) { + cmp = jsx$1(contents[i].default, { + children: cmp, + }); + } + } + return /* @__PURE__ */ jsxs(Fragment, { + children: [ + cmp, + !__EXPERIMENTAL__.noSPA && + /* @__PURE__ */ jsx('script', { + 'document:onQCInit$': spaInit, + 'document:onQInit$': sync$(() => { + ((w, h) => { + if (!w._qcs && h.scrollRestoration === 'manual') { + w._qcs = true; + const s = h.state?._qRouterScroll; + if (s) { + w.scrollTo(s.x, s.y); + } + document.dispatchEvent(new Event('qcinit')); + } + })(window, history); + }), + }), + ], + }); + } + return SkipRender; +}); + const routeActionQrl = (actionQrl, ...rest) => { const { id, validators } = getValidators(rest, actionQrl); function action() { @@ -691,6 +1147,7 @@ const routeActionQrl = (actionQrl, ...rest) => { const currentAction = useAction(); const initialState = { actionPath: `?${QACTION_KEY}=${id}`, + submitted: false, isRunning: false, status: void 0, value: void 0, @@ -700,7 +1157,9 @@ const routeActionQrl = (actionQrl, ...rest) => { const value = currentAction.value; if (value && value?.id === id) { const data = value.data; - if (data instanceof FormData) initialState.formData = data; + if (data instanceof FormData) { + initialState.formData = data; + } if (value.output) { const { status, result } = value.output; initialState.status = status; @@ -709,62 +1168,64 @@ const routeActionQrl = (actionQrl, ...rest) => { } return initialState; }); - const submit = /* @__PURE__ */ inlinedQrl( - (input = {}) => { - const [currentAction2, id2, loc2, state2] = useLexicalScope(); - if (isServer) - throw new Error(`Actions can not be invoked within the server during SSR. + const submit = $((input = {}) => { + if (isServer) { + throw new Error(`Actions can not be invoked within the server during SSR. Action.run() can only be called on the browser, for example when a user clicks a button, or submits a form.`); - let data; - let form; - if (input instanceof SubmitEvent) { - form = input.target; - data = new FormData(form); - if ( - (input.submitter instanceof HTMLInputElement || - input.submitter instanceof HTMLButtonElement) && - input.submitter.name - ) { - if (input.submitter.name) data.append(input.submitter.name, input.submitter.value); + } + let data; + let form; + if (input instanceof SubmitEvent) { + form = input.target; + data = new FormData(form); + if ( + (input.submitter instanceof HTMLInputElement || + input.submitter instanceof HTMLButtonElement) && + input.submitter.name + ) { + if (input.submitter.name) { + data.append(input.submitter.name, input.submitter.value); } - } else data = input; - return new Promise((resolve) => { - if (data instanceof FormData) state2.formData = data; - state2.isRunning = true; - loc2.isNavigating = true; - currentAction2.value = { - data, - id: id2, - resolve: noSerialize(resolve), - }; - }).then(({ result, status }) => { - state2.isRunning = false; - state2.status = status; - state2.value = result; - if (form) { - if (form.getAttribute('data-spa-reset') === 'true') form.reset(); - const detail = { - status, - value: result, - }; - form.dispatchEvent( - new CustomEvent('submitcompleted', { - bubbles: false, - cancelable: false, - composed: false, - detail, - }) - ); + } + } else { + data = input; + } + return new Promise((resolve) => { + if (data instanceof FormData) { + state.formData = data; + } + state.submitted = true; + state.isRunning = true; + loc.isNavigating = true; + currentAction.value = { + data, + id, + resolve: noSerialize(resolve), + }; + }).then(({ result, status }) => { + state.isRunning = false; + state.status = status; + state.value = result; + if (form) { + if (form.getAttribute('data-spa-reset') === 'true') { + form.reset(); } - return { - status, - value: result, - }; - }); - }, - 'routeActionQrl_action_submit_A5bZC7WO00A', - [currentAction, id, loc, state] - ); + const detail = { status, value: result }; + form.dispatchEvent( + new CustomEvent('submitcompleted', { + bubbles: false, + cancelable: false, + composed: false, + detail, + }) + ); + } + return { + status, + value: result, + }; + }); + }); initialState.submit = submit; return state; } @@ -778,64 +1239,166 @@ Action.run() can only be called on the browser, for example when a user clicks a const globalActionQrl = (actionQrl, ...rest) => { const action = routeActionQrl(actionQrl, ...rest); if (isServer) { - if (typeof globalThis._qwikActionsMap === 'undefined') + if (typeof globalThis._qwikActionsMap === 'undefined') { globalThis._qwikActionsMap = /* @__PURE__ */ new Map(); + } globalThis._qwikActionsMap.set(action.__id, action); } return action; }; const routeAction$ = /* @__PURE__ */ implicit$FirstArg(routeActionQrl); const globalAction$ = /* @__PURE__ */ implicit$FirstArg(globalActionQrl); +const getValue = (obj) => obj.value; const routeLoaderQrl = (loaderQrl, ...rest) => { - const { id, validators } = getValidators(rest, loaderQrl); + const { id, validators, serializationStrategy } = getValidators(rest, loaderQrl); function loader() { - return useContext(RouteStateContext, (state) => { - if (!(id in state)) - throw new Error(`Loader (${id}) was used in a path where the 'loader$' was not declared. - This is likely because the used loader was not exported in a layout.tsx or index.tsx file of the existing route. - For more information check: https://qwik.dev/docs/route-loader/`); - return _wrapSignal(state, id); - }); + const state = _resolveContextWithoutSequentialScope(RouteStateContext); + if (!(id in state)) { + throw new Error(`routeLoader$ "${loaderQrl.getSymbol()}" was invoked in a route where it was not declared. + This is because the routeLoader$ was not exported in a 'layout.tsx' or 'index.tsx' file of the existing route. + For more information check: https://qwik.dev/docs/route-loader/ + + If your are managing reusable logic or a library it is essential that this function is re-exported from within 'layout.tsx' or 'index.tsx file of the existing route otherwise it will not run or throw exception. + For more information check: https://qwik.dev/docs/re-exporting-loaders/`); + } + const loaderData = state[id]; + untrack(getValue, loaderData); + return loaderData; } loader.__brand = 'server_loader'; loader.__qrl = loaderQrl; loader.__validators = validators; loader.__id = id; + loader.__serializationStrategy = serializationStrategy; + loader.__expires = -1; Object.freeze(loader); return loader; }; -const routeLoader$ = /* @__PURE__ */ implicit$FirstArg(routeLoaderQrl); -const validatorQrl = (validator) => { - if (isServer) +const routeLoader$ = /* @__PURE__ */ implicit$FirstArg(routeLoaderQrl); +const validatorQrl = (validator) => { + if (isServer) { + return { + validate: validator, + }; + } + return void 0; +}; +const validator$ = /* @__PURE__ */ implicit$FirstArg(validatorQrl); +const flattenValibotIssues = (issues) => { + return issues.reduce((acc, issue) => { + if (issue.path) { + const hasArrayType = issue.path.some((path) => path.type === 'array'); + if (hasArrayType) { + const keySuffix = issue.expected === 'Array' ? '[]' : ''; + const key = + issue.path + .map((item) => (item.type === 'array' ? '*' : item.key)) + .join('.') + .replace(/\.\*/g, '[]') + keySuffix; + acc[key] = acc[key] || []; + if (Array.isArray(acc[key])) { + acc[key].push(issue.message); + } + return acc; + } else { + acc[issue.path.map((item) => item.key).join('.')] = issue.message; + } + } + return acc; + }, {}); +}; +const valibotQrl = (qrl) => { + if (!__EXPERIMENTAL__.valibot) { + throw new Error( + 'Valibot is an experimental feature and is not enabled. Please enable the feature flag by adding `experimental: ["valibot"]` to your qwikVite plugin options.' + ); + } + if (isServer) { return { - validate: validator, + __brand: 'valibot', + async validate(ev, inputData) { + const schema = await qrl + .resolve() + .then((obj) => (typeof obj === 'function' ? obj(ev) : obj)); + const data = inputData ?? (await ev.parseBody()); + const result = await v.safeParseAsync(schema, data); + if (result.success) { + return { + success: true, + data: result.output, + }; + } else { + if (isDev) { + console.error('ERROR: Valibot validation failed', result.issues); + } + return { + success: false, + status: 400, + error: { + formErrors: v.flatten(result.issues).root ?? [], + fieldErrors: flattenValibotIssues(result.issues), + }, + }; + } + }, }; + } return void 0; }; -const validator$ = /* @__PURE__ */ implicit$FirstArg(validatorQrl); +const valibot$ = /* @__PURE__ */ implicit$FirstArg(valibotQrl); +const flattenZodIssues = (issues) => { + issues = Array.isArray(issues) ? issues : [issues]; + return issues.reduce((acc, issue) => { + const isExpectingArray = 'expected' in issue && issue.expected === 'array'; + const hasArrayType = issue.path.some((path) => typeof path === 'number') || isExpectingArray; + if (hasArrayType) { + const keySuffix = 'expected' in issue && issue.expected === 'array' ? '[]' : ''; + const key = + issue.path + .map((path) => (typeof path === 'number' ? '*' : path)) + .join('.') + .replace(/\.\*/g, '[]') + keySuffix; + acc[key] = acc[key] || []; + if (Array.isArray(acc[key])) { + acc[key].push(issue.message); + } + return acc; + } else { + acc[issue.path.join('.')] = issue.message; + } + return acc; + }, {}); +}; const zodQrl = (qrl) => { if (isServer) { - const schema = qrl.resolve().then((obj) => { - if (typeof obj === 'function') obj = obj(z); - if (obj instanceof z.Schema) return obj; - else return z.object(obj); - }); return { + __brand: 'zod', async validate(ev, inputData) { + const schema = await qrl.resolve().then((obj) => { + if (typeof obj === 'function') { + obj = obj(z, ev); + } + if (obj instanceof z.Schema) { + return obj; + } else { + return z.object(obj); + } + }); const data = inputData ?? (await ev.parseBody()); - const result = await (await schema).safeParseAsync(data); - if (result.success) return result; - else { - if (isDev) - console.error( - '\nVALIDATION ERROR\naction$() zod validated failed', - '\n - Issues:', - result.error.issues - ); + const result = await withLocale(ev.locale(), () => schema.safeParseAsync(data)); + if (result.success) { + return result; + } else { + if (isDev) { + console.error('ERROR: Zod validation failed', result.error.issues); + } return { success: false, status: 400, - error: result.error.flatten(), + error: { + formErrors: result.error.flatten().formErrors, + fieldErrors: flattenZodIssues(result.error.issues), + }, }; } }, @@ -844,153 +1407,224 @@ const zodQrl = (qrl) => { return void 0; }; const zod$ = /* @__PURE__ */ implicit$FirstArg(zodQrl); -const serverQrl = (qrl) => { +const serverQrl = (qrl, options) => { if (isServer) { const captured = qrl.getCaptured(); - if (captured && captured.length > 0 && !_getContextElement()) + if (captured && captured.length > 0 && !_getContextHostElement()) { throw new Error('For security reasons, we cannot serialize QRLs that capture lexical scope.'); + } } - function stuff() { - return /* @__PURE__ */ inlinedQrl( - async (...args) => { - const [qrl2] = useLexicalScope(); - if (isServer) { - const requestEvent = useQwikRouterEnv()?.ev; - return qrl2.apply(requestEvent, args); - } else { - const ctxElm = _getContextElement(); - const filtered = args.map((arg) => { - if (arg instanceof SubmitEvent && arg.target instanceof HTMLFormElement) - return new FormData(arg.target); - else if (arg instanceof Event) return null; - else if (arg instanceof Node) return null; - return arg; - }); - const hash = qrl2.getHash(); - const path = `?qfunc=${qrl2.getHash()}`; - const body = await _serializeData([qrl2, ...filtered], false); - const res = await fetch(path, { - method: 'POST', - headers: { - 'Content-Type': 'application/qwik-json', - 'X-QRL': hash, - }, - body, - }); - const contentType = res.headers.get('Content-Type'); - if (res.ok && contentType === 'text/event-stream') { - const { writable, readable } = getSSETransformer(); - res.body?.pipeTo(writable); - return streamAsyncIterator(readable, ctxElm ?? document.documentElement); - } else if (contentType === 'application/qwik-json') { - const str = await res.text(); - const obj = await _deserializeData(str, ctxElm ?? document.documentElement); - if (res.status === 500) throw obj; - return obj; + const method = options?.method?.toUpperCase?.() || 'POST'; + const headers = options?.headers || {}; + const origin = options?.origin || ''; + const fetchOptions = options?.fetchOptions || {}; + return $(async function (...args) { + const abortSignal = args.length > 0 && args[0] instanceof AbortSignal ? args.shift() : void 0; + if (isServer) { + let requestEvent = _asyncRequestStore?.getStore(); + if (!requestEvent) { + const contexts = [useQwikRouterEnv()?.ev, this, _getContextEvent()]; + requestEvent = contexts.find( + (v2) => + v2 && + Object.prototype.hasOwnProperty.call(v2, 'sharedMap') && + Object.prototype.hasOwnProperty.call(v2, 'cookie') + ); + } + return qrl.apply(requestEvent, args); + } else { + let filteredArgs = args.map((arg) => { + if (arg instanceof SubmitEvent && arg.target instanceof HTMLFormElement) { + return new FormData(arg.target); + } else if (arg instanceof Event) { + return null; + } else if (arg instanceof Node) { + return null; + } + return arg; + }); + if (!filteredArgs.length) { + filteredArgs = void 0; + } + const qrlHash = qrl.getHash(); + let query = ''; + const config = { + ...fetchOptions, + method, + headers: { + ...headers, + 'Content-Type': 'application/qwik-json', + Accept: 'application/json, application/qwik-json, text/qwik-json-stream, text/plain', + // Required so we don't call accidentally + 'X-QRL': qrlHash, + }, + signal: abortSignal, + }; + const captured = qrl.getCaptured(); + let toSend = [filteredArgs]; + if (captured?.length) { + toSend = [filteredArgs, ...captured]; + } else { + toSend = filteredArgs ? [filteredArgs] : []; + } + const body = await _serialize(toSend); + if (method === 'GET') { + query += `&${QDATA_KEY}=${encodeURIComponent(body)}`; + } else { + config.body = body; + } + const res = await fetch(`${origin}?${QFN_KEY}=${qrlHash}${query}`, config); + const contentType = res.headers.get('Content-Type'); + if (res.ok && contentType === 'text/qwik-json-stream' && res.body) { + return (async function* () { + try { + for await (const result of deserializeStream(res.body, abortSignal)) { + yield result; + } + } finally { + if (!abortSignal?.aborted) { + await res.body.cancel(); + } } + })(); + } else if (contentType === 'application/qwik-json') { + const str = await res.text(); + const obj = _deserialize(str); + if (res.status >= 400) { + throw obj; } - }, - 'serverQrl_stuff_wOIPfiQ04l4', - [qrl] - ); - } - return stuff(); + return obj; + } else if (contentType === 'application/json') { + const obj = await res.json(); + if (res.status >= 400) { + throw obj; + } + return obj; + } else if (contentType === 'text/plain' || contentType === 'text/html') { + const str = await res.text(); + if (res.status >= 400) { + throw str; + } + return str; + } + } + }); }; const server$ = /* @__PURE__ */ implicit$FirstArg(serverQrl); const getValidators = (rest, qrl) => { let id; + let serializationStrategy = DEFAULT_LOADERS_SERIALIZATION_STRATEGY; const validators = []; if (rest.length === 1) { const options = rest[0]; if (options && typeof options === 'object') { - if ('validate' in options) validators.push(options); - else { + if ('validate' in options) { + validators.push(options); + } else { id = options.id; - if (options.validation) validators.push(...options.validation); + if (options.serializationStrategy) { + serializationStrategy = options.serializationStrategy; + } + if (options.validation) { + validators.push(...options.validation); + } } } - } else if (rest.length > 1) validators.push(...rest.filter((v) => !!v)); + } else if (rest.length > 1) { + validators.push(...rest.filter((v2) => !!v2)); + } if (typeof id === 'string') { if (isDev) { - if (!/^[\w/.-]+$/.test(id)) + if (!/^[\w/.-]+$/.test(id)) { throw new Error(`Invalid id: ${id}, id can only contain [a-zA-Z0-9_.-]`); + } } id = `id_${id}`; - } else id = qrl.getHash(); + } else { + id = qrl.getHash(); + } return { validators: validators.reverse(), id, + serializationStrategy, }; }; -const getSSETransformer = () => { - let currentLine = ''; - const encoder = new TextDecoder(); - const transformer = new TransformStream({ - transform(chunk, controller) { - const lines = encoder.decode(chunk).split('\n\n'); - for (let i = 0; i < lines.length - 1; i++) { - const line = currentLine + lines[i]; - if (line.length === 0) { - controller.terminate(); - break; - } else { - controller.enqueue(parseEvent(line)); - currentLine = ''; - } - } - currentLine += lines[lines.length - 1]; - }, - }); - return transformer; -}; -const parseEvent = (message) => { - const lines = message.split('\n'); - const event = { - data: '', - }; - let data = ''; - for (const line of lines) - if (line.startsWith('data: ')) data += line.slice(6) + '\n'; - else { - const [key, value] = line.split(':'); - if (typeof key === 'string' && typeof value === 'string') event[key] = value.trim(); - } - event.data = data; - return event; -}; -async function* streamAsyncIterator(stream, ctxElm) { +const deserializeStream = async function* (stream, abortSignal) { const reader = stream.getReader(); try { - while (true) { - const { done, value } = await reader.read(); - if (done) return; - const obj = await _deserializeData(value.data, ctxElm); - yield obj; + let buffer = ''; + const decoder = new TextDecoder(); + while (!abortSignal?.aborted) { + const result = await reader.read(); + if (result.done) { + break; + } + buffer += decoder.decode(result.value, { stream: true }); + const lines = buffer.split(/\n/); + buffer = lines.pop(); + for (const line of lines) { + const deserializedData = _deserialize(line); + yield deserializedData; + } } } finally { reader.releaseLock(); } -} +}; + +const ServiceWorkerRegister = (props) => + /* @__PURE__ */ jsx('script', { + type: 'module', + dangerouslySetInnerHTML: swRegister, + nonce: props.nonce, + }); + const Form = ({ action, spaReset, reloadDocument, onSubmit$, ...rest }, key) => { - _jsxBranch(); - if (action) - return _jsxSplit( + if (action) { + const isArrayApi = Array.isArray(onSubmit$); + if (isArrayApi) { + return jsx$1( + 'form', + { + ...rest, + action: action.actionPath, + 'preventdefault:submit': !reloadDocument, + onSubmit$: [ + ...onSubmit$, + // action.submit "submitcompleted" event for onSubmitCompleted$ events + !reloadDocument + ? $((evt) => { + if (!action.submitted) { + return action.submit(evt); + } + }) + : void 0, + ], + method: 'post', + ['data-spa-reset']: spaReset ? 'true' : void 0, + }, + key + ); + } + return jsx$1( 'form', { ...rest, - action: _wrapSignal(action, 'actionPath'), + action: action.actionPath, 'preventdefault:submit': !reloadDocument, - ['data-spa-reset']: spaReset ? 'true' : void 0, - onSubmit$: [!reloadDocument ? action.submit : void 0, onSubmit$], - }, - { + onSubmit$: [ + // Since v2, this fires before the action is executed so it can be prevented + onSubmit$, + // action.submit "submitcompleted" event for onSubmitCompleted$ events + !reloadDocument ? action.submit : void 0, + ], method: 'post', + ['data-spa-reset']: spaReset ? 'true' : void 0, }, - 0, key ); - else - return /* @__PURE__ */ _jsxSplit( + } else { + return /* @__PURE__ */ jsx( GetForm, { spaReset, @@ -998,96 +1632,190 @@ const Form = ({ action, spaReset, reloadDocument, onSubmit$, ...rest }, key) => onSubmit$, ...rest, }, - 0, key ); + } }; -const GetForm = /* @__PURE__ */ componentQrl( - /* @__PURE__ */ inlinedQrl((props) => { - const rest = _restProps(props, ['action', 'spaReset', 'reloadDocument', 'onSubmit$']); - const nav = useNavigate(); - return /* @__PURE__ */ _jsxSplit( - 'form', - { - ...rest, - children: /* @__PURE__ */ _jsxSplit(Slot, null, 3, 'BC_0'), - onSubmit$: /* @__PURE__ */ inlinedQrl( - async (_, form) => { - const [nav2] = useLexicalScope(); - const formData = new FormData(form); - const params = new URLSearchParams(); - formData.forEach((value, key) => { - if (typeof value === 'string') params.append(key, value); - }); - nav2('?' + params.toString(), true).then(() => { - if (form.getAttribute('data-spa-reset') === 'true') form.reset(); - form.dispatchEvent( - new CustomEvent('submitcompleted', { - bubbles: false, - cancelable: false, - composed: false, - detail: { - status: 200, - }, - }) - ); - }); - }, - 'GetForm_component_form_onSubmit_p9MSze0ojs4', - [nav] - ), - }, - { - action: 'get', - 'preventdefault:submit': _fnSignal( - (p0) => !p0.reloadDocument, - [props], - '!p0.reloadDocument' - ), - 'data-spa-reset': _fnSignal( - (p0) => (p0.spaReset ? 'true' : void 0), - [props], - 'p0.spaReset?"true":undefined' - ), - }, - 0, - 'BC_1' - ); - }, 'GetForm_component_Nk9PlpjQm9Y') -); +const GetForm = component$(({ action: _0, spaReset, reloadDocument, onSubmit$, ...rest }) => { + const nav = useNavigate(); + return /* @__PURE__ */ jsx('form', { + action: 'get', + 'preventdefault:submit': !reloadDocument, + 'data-spa-reset': spaReset ? 'true' : void 0, + ...rest, + onSubmit$: [ + ...(Array.isArray(onSubmit$) ? onSubmit$ : [onSubmit$]), + $(async (_evt, form) => { + const formData = new FormData(form); + const params = new URLSearchParams(); + formData.forEach((value, key) => { + if (typeof value === 'string') { + params.append(key, value); + } + }); + await nav('?' + params.toString(), { type: 'form', forceReload: true }); + }), + $((_evt, form) => { + if (form.getAttribute('data-spa-reset') === 'true') { + form.reset(); + } + form.dispatchEvent( + new CustomEvent('submitcompleted', { + bubbles: false, + cancelable: false, + composed: false, + detail: { + status: 200, + }, + }) + ); + }), + // end of array + ], + children: /* @__PURE__ */ jsx(Slot, {}), + }); +}); + +const untypedAppUrl = function appUrl(route, params, paramsPrefix = '') { + const path = route.split('/'); + for (let i = 0; i < path.length; i++) { + const segment = path[i]; + if (segment.startsWith('[') && segment.endsWith(']')) { + const isSpread = segment.startsWith('[...'); + const key = segment.substring(segment.startsWith('[...') ? 4 : 1, segment.length - 1); + const value = params ? params[paramsPrefix + key] || params[key] : ''; + path[i] = isSpread ? value : encodeURIComponent(value); + } + if (segment.startsWith('(') && segment.endsWith(')')) { + path.splice(i, 1); + } + } + let url = path.join('/'); + let baseURL = '/'; + if (baseURL) { + if (!baseURL.endsWith('/')) { + baseURL += '/'; + } + while (url.startsWith('/')) { + url = url.substring(1); + } + url = baseURL + url; + } + return url; +}; +function omitProps(obj, keys) { + const omittedObj = {}; + for (const key in obj) { + if (!key.startsWith('param:') && !keys.includes(key)) { + omittedObj[key] = obj[key]; + } + } + return omittedObj; +} + +const createRenderer = (getOptions) => { + return (opts) => { + const { jsx, options } = getOptions(opts); + return renderToStream(jsx, options); + }; +}; + +const DocumentHeadTags = component$((props) => { + let head = useDocumentHead(); + if (props) { + head = { ...head, ...props }; + } + return /* @__PURE__ */ jsxs(Fragment, { + children: [ + head.title && /* @__PURE__ */ jsx('title', { children: head.title }), + head.meta.map((m) => /* @__PURE__ */ jsx('meta', { ...m })), + head.links.map((l) => /* @__PURE__ */ jsx('link', { ...l })), + head.styles.map((s) => { + const props2 = s.props || s; + return /* @__PURE__ */ createElement('style', { + ...props2, + dangerouslySetInnerHTML: s.style || props2.dangerouslySetInnerHTML, + key: s.key, + }); + }), + head.scripts.map((s) => { + const props2 = s.props || s; + return /* @__PURE__ */ createElement('script', { + ...props2, + dangerouslySetInnerHTML: s.script || props2.dangerouslySetInnerHTML, + key: s.key, + }); + }), + ], + }); +}); + export { + DocumentHeadTags, + ErrorBoundary, Form, - globalAction$, - globalActionQrl, Link, + QWIK_CITY_SCROLLER, + QWIK_ROUTER_SCROLLER, + QwikCityMockProvider, + QwikCityProvider, QwikRouterMockProvider, - QwikRouterProvider as QwikRouterProvider, + QwikRouterProvider, + RouterOutlet, + ServiceWorkerRegister, + createRenderer, + globalAction$, + globalActionQrl, + omitProps, routeAction$, routeActionQrl, routeLoader$, routeLoaderQrl, - RouterOutlet, server$, serverQrl, - ServiceWorkerRegister, + untypedAppUrl, useContent, useDocumentHead, useLocation, useNavigate, + usePreventNavigate$, + usePreventNavigateQrl, + useQwikRouter, + valibot$, + valibotQrl, validator$, validatorQrl, - z2 as z, zod$, zodQrl, }; ============================= ../node_modules/@qwik.dev/router/index.qwik.mjs == +import { jsx, Fragment, jsxs } from '@qwik.dev/core/jsx-runtime'; +import { component$, useErrorBoundary, useOnWindow, $, Slot, createContextId, useContext, implicit$FirstArg, noSerialize, useVisibleTask$, useServerData, useSignal, untrack, sync$, isDev, withLocale, event$, isServer, useStyles$, useStore, isBrowser, useContextProvider, useTask$, getLocale, jsx as jsx$1, SkipRender, createElement } from '@qwik.dev/core'; +import { g as getClientNavPath, s as shouldPreload, p as preloadRouteBundles, l as loadClientData, i as isPromise, a as isSamePath, c as createLoaderSignal, t as toUrl, b as isSameOrigin, d as loadRoute, D as DEFAULT_LOADERS_SERIALIZATION_STRATEGY, C as CLIENT_DATA_CACHE, Q as Q_ROUTE, e as clientNavigate, f as QFN_KEY, h as QACTION_KEY, j as QDATA_KEY } from './chunks/routing.qwik.mjs'; import * as qwikRouterConfig from '@qwik-router-config'; +import { _getContextContainer, SerializerSymbol, _UNINITIALIZED, _hasStoreEffects, forceStoreEffects, _waitUntilRendered, _getContextHostElement, _getContextEvent, _serialize, _deserialize, _resolveContextWithoutSequentialScope } from '@qwik.dev/core/internal'; +import { _asyncRequestStore } from '@qwik.dev/router/middleware/request-handler'; +import * as v from 'valibot'; +import * as z from 'zod'; +export { z } from 'zod'; import swRegister from '@qwik-router-sw-register'; -import { _deserializeData, _fnSignal, _getContextElement, _jsxBranch, _jsxSplit, _restProps, _serializeData, _weakSerialize, _wrapSignal, componentQrl, createContextId, eventQrl, getLocale, implicit$FirstArg, inlinedQrl, noSerialize, SkipRender, Slot, untrack, useContext, useContextProvider, useLexicalScope, useOnDocument, useServerData, useSignal, useStore, useStylesQrl, useTaskQrl, withLocale } from '@qwik.dev/core'; -import { isBrowser, isDev, isServer } from '@qwik.dev/core/build'; -import { z, z as z2 } from 'zod'; +import { renderToStream } from '@qwik.dev/core/server'; +import '@qwik.dev/core/preloader'; +import './chunks/types.qwik.mjs'; +const ErrorBoundary = component$((props)=>{ + const store = useErrorBoundary(); + useOnWindow('qerror', $((e)=>{ + store.error = e.detail.error; + })); + if (store.error && props.fallback$) { + return /* @__PURE__ */ jsx(Fragment, { + children: props.fallback$(store.error) + }); + } + return /* @__PURE__ */ jsx(Slot, {}); +}); const RouteStateContext = /* @__PURE__ */ createContextId('qc-s'); const ContentContext = /* @__PURE__ */ createContextId('qc-c'); const ContentInternalContext = /* @__PURE__ */ createContextId('qc-ic'); @@ -1095,316 +1823,463 @@ const DocumentHeadContext = /* @__PURE__ */ createContextId('qc-h'); const RouteLocationContext = /* @__PURE__ */ createContextId('qc-l'); const RouteNavigateContext = /* @__PURE__ */ createContextId('qc-n'); const RouteActionContext = /* @__PURE__ */ createContextId('qc-a'); -const RouterOutlet = /* @__PURE__ */ componentQrl(/* @__PURE__ */ inlinedQrl(()=>{ - _jsxBranch(); - useOnDocument('qinit', eventQrl(/* @__PURE__ */ inlinedQrl(()=>{ - const POPSTATE_FALLBACK_INITIALIZED = '_qRouterPopstateFallback'; - const CLIENT_HISTORY_INITIALIZED = '_qRouterHistory'; - if (!window[POPSTATE_FALLBACK_INITIALIZED]) { - window[POPSTATE_FALLBACK_INITIALIZED] = ()=>{ - if (!window[CLIENT_HISTORY_INITIALIZED]) location.reload(); - }; - setTimeout(()=>{ - addEventListener('popstate', window[POPSTATE_FALLBACK_INITIALIZED]); - }, 0); - } - }, 'RouterOutlet_component_useOnDocument_event_KnNE9eL0qfc'))); - const context = useContext(ContentInternalContext); - if (context.value && context.value.length > 0) { - const contentsLen = context.value.length; - let cmp = null; - for(let i = contentsLen - 1; i >= 0; i--)cmp = _jsxSplit(context.value[i].default, { - children: cmp - }, 1, 'k8_0'); - return cmp; - } - return SkipRender; -}, 'RouterOutlet_component_AKetNByE5TM')); -const MODULE_CACHE = /* @__PURE__ */ new WeakMap(); -const CLIENT_DATA_CACHE = /* @__PURE__ */ new Map(); -const QACTION_KEY = 'qaction'; -const toPath = (url)=>url.pathname + url.search + url.hash; -const toUrl = (url, baseUrl)=>new URL(url, baseUrl.href); -const isSameOrigin = (a, b)=>a.origin === b.origin; -const isSamePath = (a, b)=>a.pathname + a.search === b.pathname + b.search; -const isSamePathname = (a, b)=>a.pathname === b.pathname; -const isSameOriginDifferentPathname = (a, b)=>isSameOrigin(a, b) && !isSamePath(a, b); -const getClientDataPath = (pathname, pageSearch, action)=>{ - let search = pageSearch ?? ''; - if (action) search += (search ? '&' : '?') + QACTION_KEY + '=' + encodeURIComponent(action.id); - return pathname + (pathname.endsWith('/') ? '' : '/') + 'q-data.json' + search; -}; -const getClientNavPath = (props, baseUrl)=>{ - const href = props.href; - if (typeof href === 'string' && href.trim() !== '' && typeof props.target !== 'string') try { - const linkUrl = toUrl(href, baseUrl.url); - const currentUrl = toUrl('', baseUrl.url); - if (isSameOrigin(linkUrl, currentUrl)) return toPath(linkUrl); - } catch (e) { - console.error(e); - } - else if (props.reload) return toPath(toUrl('', baseUrl.url)); - return null; -}; -const getPrefetchDataset = (props, clientNavPath, currentLoc)=>{ - if (props.prefetch === true && clientNavPath) { - const prefetchUrl = toUrl(clientNavPath, currentLoc.url); - if (!isSamePathname(prefetchUrl, toUrl('', currentLoc.url))) return ''; +const RoutePreventNavigateContext = /* @__PURE__ */ createContextId('qc-p'); +const useContent = ()=>useContext(ContentContext); +const useDocumentHead = ()=>useContext(DocumentHeadContext); +const useLocation = ()=>useContext(RouteLocationContext); +const useNavigate = ()=>useContext(RouteNavigateContext); +const usePreventNavigateQrl = (fn)=>{ + if (!__EXPERIMENTAL__.preventNavigate) { + throw new Error('usePreventNavigate$ is experimental and must be enabled with `experimental: ["preventNavigate"]` in the `qwikVite` plugin.'); } - return null; + const registerPreventNav = useContext(RoutePreventNavigateContext); + useVisibleTask$(()=>registerPreventNav(fn)); }; -const clientNavigate = (win, newUrl, routeNavigate)=>{ - const currentUrl = win.location; - if (isSameOriginDifferentPathname(currentUrl, newUrl)) { - handleScroll(win, currentUrl, newUrl); - win.history.pushState('', '', toPath(newUrl)); - } - if (!win._qRouterHistory) { - win._qRouterHistory = 1; - win.addEventListener('popstate', ()=>{ - const currentUrl2 = win.location; - const previousUrl = toUrl(routeNavigate.value, currentUrl2); - if (isSameOriginDifferentPathname(currentUrl2, previousUrl)) { - handleScroll(win, previousUrl, currentUrl2); - routeNavigate.value = toPath(new URL(currentUrl2.href)); +const usePreventNavigate$ = implicit$FirstArg(usePreventNavigateQrl); +const useAction = ()=>useContext(RouteActionContext); +const useQwikRouterEnv = ()=>noSerialize(useServerData('qwikrouter')); +const Link = component$((props)=>{ + const nav = useNavigate(); + const loc = useLocation(); + const originalHref = props.href; + const anchorRef = useSignal(); + const { onClick$, prefetch: prefetchProp, reload, replaceState, scroll, ...linkProps } = /* @__PURE__ */ (()=>props)(); + const clientNavPath = untrack(getClientNavPath, { + ...linkProps, + reload + }, loc); + linkProps.href = clientNavPath || originalHref; + const prefetchData = !!clientNavPath && prefetchProp !== false && prefetchProp !== 'js' || void 0; + const prefetch = prefetchData || !!clientNavPath && prefetchProp !== false && untrack(shouldPreload, clientNavPath, loc); + const handlePrefetch = prefetch ? $((_, elm)=>{ + if (navigator.connection?.saveData) { + return; + } + if (elm && elm.href) { + const url = new URL(elm.href); + preloadRouteBundles(url.pathname); + if (elm.hasAttribute('data-prefetch')) { + loadClientData(url, { + preloadRouteBundles: false, + isPrefetch: true + }); } - }); - win.removeEventListener('popstate', win._qRouterPopstateFallback); - } -}; -const handleScroll = async (win, previousUrl, newUrl)=>{ - const doc = win.document; - const newHash = newUrl.hash; - if (isSamePath(previousUrl, newUrl)) { - if (previousUrl.hash !== newHash) { - await domWait(); - if (newHash) scrollToHashId(doc, newHash); - else win.scrollTo(0, 0); } - } else { - if (newHash) for(let i = 0; i < 24; i++){ - await domWait(); - if (scrollToHashId(doc, newHash)) break; + }) : void 0; + const preventDefault = clientNavPath ? sync$((event)=>{ + if (!(event.metaKey || event.ctrlKey || event.shiftKey || event.altKey)) { + event.preventDefault(); } - else { - await domWait(); - win.scrollTo(0, 0); + }) : void 0; + const handleClientSideNavigation = clientNavPath ? $((event, elm)=>{ + if (event.defaultPrevented) { + if (elm.href) { + elm.setAttribute('aria-pressed', 'true'); + nav(elm.href, { + forceReload: reload, + replaceState, + scroll + }).then(()=>{ + elm.removeAttribute('aria-pressed'); + }); + } } - } -}; -const domWait = ()=>new Promise((resolve)=>setTimeout(resolve, 12)); -const scrollToHashId = (doc, hash)=>{ - const elmId = hash.slice(1); - const elm = doc.getElementById(elmId); - if (elm) elm.scrollIntoView(); - return elm; -}; -const dispatchPrefetchEvent = (prefetchData)=>{ - if (typeof document !== 'undefined') document.dispatchEvent(new CustomEvent('qprefetch', { - detail: prefetchData - })); -}; -const resolveHead = (endpoint, routeLocation, contentModules, locale)=>{ - const head = createDocumentHead(); - const getData = (loaderOrAction)=>{ - const id = loaderOrAction.__id; - if (loaderOrAction.__brand === 'server_loader') { - if (!(id in endpoint.loaders)) throw new Error('You can not get the returned data of a loader that has not been executed for this request.'); - } - const data = endpoint.loaders[id]; - if (data instanceof Promise) throw new Error('Loaders returning a function can not be referred to in the head function.'); - return data; - }; - const headProps = { - head, - withLocale: (fn)=>withLocale(locale, fn), - resolveValue: getData, - ...routeLocation - }; - for(let i = contentModules.length - 1; i >= 0; i--){ - const contentModuleHead = contentModules[i] && contentModules[i].head; - if (contentModuleHead) { - if (typeof contentModuleHead === 'function') resolveDocumentHead(head, withLocale(locale, ()=>contentModuleHead(headProps))); - else if (typeof contentModuleHead === 'object') resolveDocumentHead(head, contentModuleHead); + }) : void 0; + const handlePreload = $((_, elm)=>{ + const url = new URL(elm.href); + preloadRouteBundles(url.pathname, 1); + }); + useVisibleTask$(({ track })=>{ + track(()=>loc.url.pathname); + const handler = linkProps.onQVisible$; + if (handler) { + const event = new CustomEvent('qvisible'); + if (Array.isArray(handler)) { + handler.flat(10).forEach((handler2)=>handler2?.(event, anchorRef.value)); + } else { + handler?.(event, anchorRef.value); + } } - } - return headProps.head; -}; + if (!isDev && anchorRef.value) { + handlePrefetch?.(void 0, anchorRef.value); + } + }); + return /* @__PURE__ */ jsx('a', { + ref: anchorRef, + ...{ + 'q:link': !!clientNavPath + }, + ...linkProps, + onClick$: [ + preventDefault, + handlePreload, + // needs to be in between preventDefault and onClick$ to ensure it starts asap. + onClick$, + handleClientSideNavigation + ], + 'data-prefetch': prefetchData, + onMouseOver$: [ + linkProps.onMouseOver$, + handlePrefetch + ], + onFocus$: [ + linkProps.onFocus$, + handlePrefetch + ], + onQVisible$: [], + children: /* @__PURE__ */ jsx(Slot, {}) + }); +}); +const resolveHead = (endpoint, routeLocation, contentModules, locale, defaults)=>withLocale(locale, ()=>{ + const head = createDocumentHead(defaults); + const getData = (loaderOrAction)=>{ + const id = loaderOrAction.__id; + if (loaderOrAction.__brand === 'server_loader') { + if (!(id in endpoint.loaders)) { + throw new Error('You can not get the returned data of a loader that has not been executed for this request.'); + } + } + const data = endpoint.loaders[id]; + if (isPromise(data)) { + throw new Error('Loaders returning a promise can not be resolved for the head function.'); + } + return data; + }; + const fns = []; + for (const contentModule of contentModules){ + const contentModuleHead = contentModule?.head; + if (contentModuleHead) { + if (typeof contentModuleHead === 'function') { + fns.unshift(contentModuleHead); + } else if (typeof contentModuleHead === 'object') { + resolveDocumentHead(head, contentModuleHead); + } + } + } + if (fns.length) { + const headProps = { + head, + withLocale: (fn)=>fn(), + resolveValue: getData, + ...routeLocation + }; + for (const fn of fns){ + resolveDocumentHead(head, fn(headProps)); + } + } + return head; + }); const resolveDocumentHead = (resolvedHead, updatedHead)=>{ - if (typeof updatedHead.title === 'string') resolvedHead.title = updatedHead.title; + if (typeof updatedHead.title === 'string') { + resolvedHead.title = updatedHead.title; + } mergeArray(resolvedHead.meta, updatedHead.meta); mergeArray(resolvedHead.links, updatedHead.links); mergeArray(resolvedHead.styles, updatedHead.styles); + mergeArray(resolvedHead.scripts, updatedHead.scripts); Object.assign(resolvedHead.frontmatter, updatedHead.frontmatter); }; const mergeArray = (existingArr, newArr)=>{ - if (Array.isArray(newArr)) for (const newItem of newArr){ - if (typeof newItem.key === 'string') { - const existingIndex = existingArr.findIndex((i)=>i.key === newItem.key); - if (existingIndex > -1) { - existingArr[existingIndex] = newItem; - continue; + if (Array.isArray(newArr)) { + for (const newItem of newArr){ + if (typeof newItem.key === 'string') { + const existingIndex = existingArr.findIndex((i)=>i.key === newItem.key); + if (existingIndex > -1) { + existingArr[existingIndex] = newItem; + continue; + } } + existingArr.push(newItem); } - existingArr.push(newItem); } }; -const createDocumentHead = ()=>({ - title: '', - meta: [], - links: [], - styles: [], - frontmatter: {} - }); -const loadRoute = async (routes, menus, cacheModules, pathname)=>{ - if (Array.isArray(routes)) for (const route of routes){ - const match = route[0].exec(pathname); - if (match) { - const loaders = route[1]; - const params = getPathParams(route[2], match); - const routeBundleNames = route[4]; - const mods = new Array(loaders.length); - const pendingLoads = []; - const menuLoader = getMenuLoader(menus, pathname); - let menu = void 0; - loaders.forEach((moduleLoader, i)=>{ - loadModule(moduleLoader, pendingLoads, (routeModule)=>mods[i] = routeModule, cacheModules); - }); - loadModule(menuLoader, pendingLoads, (menuModule)=>menu = menuModule?.default, cacheModules); - if (pendingLoads.length > 0) await Promise.all(pendingLoads); - return [ - params, - mods, - menu, - routeBundleNames - ]; +const createDocumentHead = (defaults)=>({ + title: defaults?.title || '', + meta: [ + ...defaults?.meta || [] + ], + links: [ + ...defaults?.links || [] + ], + styles: [ + ...defaults?.styles || [] + ], + scripts: [ + ...defaults?.scripts || [] + ], + frontmatter: { + ...defaults?.frontmatter } + }); +const transitionCss = '@layer qwik{@supports selector(html:active-view-transition-type(type)){html:active-view-transition-type(qwik-navigation){:root{view-transition-name:none}}}@supports not selector(html:active-view-transition-type(type)){:root{view-transition-name:none}}}'; +function callRestoreScrollOnDocument() { + if (document.__q_scroll_restore__) { + document.__q_scroll_restore__(); + document.__q_scroll_restore__ = void 0; } - return null; -}; -const loadModule = (moduleLoader, pendingLoads, moduleSetter, cacheModules)=>{ - if (typeof moduleLoader === 'function') { - const loadedModule = MODULE_CACHE.get(moduleLoader); - if (loadedModule) moduleSetter(loadedModule); - else { - const l = moduleLoader(); - if (typeof l.then === 'function') pendingLoads.push(l.then((loadedModule2)=>{ - if (cacheModules !== false) MODULE_CACHE.set(moduleLoader, loadedModule2); - moduleSetter(loadedModule2); - })); - else if (l) moduleSetter(l); +} +const restoreScroll = (type, toUrl, fromUrl, scroller, scrollState)=>{ + if (type === 'popstate' && scrollState) { + scroller.scrollTo(scrollState.x, scrollState.y); + } else if (type === 'link' || type === 'form') { + if (!hashScroll(toUrl, fromUrl)) { + scroller.scrollTo(0, 0); } } }; -const getMenuLoader = (menus, pathname)=>{ - if (menus) { - pathname = pathname.endsWith('/') ? pathname : pathname + '/'; - const menu = menus.find((m)=>m[0] === pathname || pathname.startsWith(m[0] + (pathname.endsWith('/') ? '' : '/'))); - if (menu) return menu[1]; +const hashScroll = (toUrl, fromUrl)=>{ + const elmId = toUrl.hash.slice(1); + const elm = elmId && document.getElementById(elmId); + if (elm) { + elm.scrollIntoView(); + return true; + } else if (!elm && toUrl.hash && isSamePath(toUrl, fromUrl)) { + return true; } + return false; +}; +const currentScrollState = (elm)=>{ + return { + x: elm.scrollLeft, + y: elm.scrollTop, + w: Math.max(elm.scrollWidth, elm.clientWidth), + h: Math.max(elm.scrollHeight, elm.clientHeight) + }; }; -const getPathParams = (paramNames, match)=>{ - const params = {}; - if (paramNames) for(let i = 0; i < paramNames.length; i++){ - const param = match?.[i + 1] ?? ''; - const v = param.endsWith('/') ? param.slice(0, -1) : param; - params[paramNames[i]] = decodeURIComponent(v); - } - return params; +const getScrollHistory = ()=>{ + const state = history.state; + return state?._qRouterScroll; }; -const loadClientData = async (url, element, clearCache, action)=>{ - const pagePathname = url.pathname; - const pageSearch = url.search; - const clientDataPath = getClientDataPath(pagePathname, pageSearch, action); - let qData = void 0; - if (!action) qData = CLIENT_DATA_CACHE.get(clientDataPath); - dispatchPrefetchEvent({ - links: [ - pagePathname - ] - }); - if (!qData) { - const options = getFetchOptions(action); - if (action) action.data = void 0; - qData = fetch(clientDataPath, options).then((rsp)=>{ - const redirectedURL = new URL(rsp.url); - if (redirectedURL.origin !== location.origin || !isQDataJson(redirectedURL.pathname)) { - location.href = redirectedURL.href; +const saveScrollHistory = (scrollState)=>{ + const state = history.state || {}; + state._qRouterScroll = scrollState; + history.replaceState(state, ''); +}; +const spaInit = event$((_, el)=>{ + if (!window._qRouterSPA && !window._qRouterInitPopstate) { + const currentPath = location.pathname + location.search; + const checkAndScroll = (scrollState)=>{ + if (scrollState) { + window.scrollTo(scrollState.x, scrollState.y); + } + }; + const currentScrollState = ()=>{ + const elm = document.documentElement; + return { + x: elm.scrollLeft, + y: elm.scrollTop, + w: Math.max(elm.scrollWidth, elm.clientWidth), + h: Math.max(elm.scrollHeight, elm.clientHeight) + }; + }; + const saveScrollState = (scrollState)=>{ + const state = history.state || {}; + state._qRouterScroll = scrollState || currentScrollState(); + history.replaceState(state, ''); + }; + saveScrollState(); + window._qRouterInitPopstate = ()=>{ + if (window._qRouterSPA) { return; } - if ((rsp.headers.get('content-type') || '').includes('json')) return rsp.text().then((text)=>{ - const clientData = _deserializeData(text, element); - if (!clientData) { - location.href = url.href; - return; - } - if (clearCache) CLIENT_DATA_CACHE.delete(clientDataPath); - if (clientData.redirect) location.href = clientData.redirect; - else if (action) { - const actionData = clientData.loaders[action.id]; - action.resolve({ - status: rsp.status, - result: actionData + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + if (currentPath !== location.pathname + location.search) { + const getContainer = (el2)=>el2.closest('[q\\:container]:not([q\\:container=html]):not([q\\:container=text])'); + const container = getContainer(el); + const domContainer = container.qContainer; + const hostElement = domContainer.vNodeLocate(el); + const nav = domContainer?.resolveContext(hostElement, { + id: 'qc--n' + }); + if (nav) { + nav(location.href, { + type: 'popstate' }); + } else { + location.reload(); + } + } else { + if (history.scrollRestoration === 'manual') { + const scrollState = history.state?._qRouterScroll; + checkAndScroll(scrollState); + window._qRouterScrollEnabled = true; + } + } + }; + if (!window._qRouterHistoryPatch) { + window._qRouterHistoryPatch = true; + const pushState = history.pushState; + const replaceState = history.replaceState; + const prepareState = (state)=>{ + if (state === null || typeof state === 'undefined') { + state = {}; + } else if (state?.constructor !== Object) { + state = { + _data: state + }; + if (isDev) { + console.warn('In a Qwik SPA context, `history.state` is used to store scroll state. Direct calls to `pushState()` and `replaceState()` must supply an actual Object type. We need to be able to automatically attach the scroll state to your state object. A new state object has been created, your data has been moved to: `history.state._data`'); + } + } + state._qRouterScroll = state._qRouterScroll || currentScrollState(); + return state; + }; + history.pushState = (state, title, url)=>{ + state = prepareState(state); + return pushState.call(history, state, title, url); + }; + history.replaceState = (state, title, url)=>{ + state = prepareState(state); + return replaceState.call(history, state, title, url); + }; + } + window._qRouterInitAnchors = (event)=>{ + if (window._qRouterSPA || event.defaultPrevented) { + return; + } + const target = event.target.closest('a[href]'); + if (target && !target.hasAttribute('preventdefault:click')) { + const href = target.getAttribute('href'); + const prev = new URL(location.href); + const dest = new URL(href, prev); + const sameOrigin = dest.origin === prev.origin; + const samePath = dest.pathname + dest.search === prev.pathname + prev.search; + if (sameOrigin && samePath) { + event.preventDefault(); + if (dest.href !== prev.href) { + history.pushState(null, '', dest); + } + if (!dest.hash) { + if (dest.href.endsWith('#')) { + window.scrollTo(0, 0); + } else { + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + saveScrollState({ + ...currentScrollState(), + x: 0, + y: 0 + }); + location.reload(); + } + } else { + const elmId = dest.hash.slice(1); + const elm = document.getElementById(elmId); + if (elm) { + elm.scrollIntoView(); + } + } } - return clientData; + } + }; + window._qRouterInitVisibility = ()=>{ + if (!window._qRouterSPA && window._qRouterScrollEnabled && document.visibilityState === 'hidden') { + saveScrollState(); + } + }; + window._qRouterInitScroll = ()=>{ + if (window._qRouterSPA || !window._qRouterScrollEnabled) { + return; + } + clearTimeout(window._qRouterScrollDebounce); + window._qRouterScrollDebounce = setTimeout(()=>{ + saveScrollState(); + window._qRouterScrollDebounce = void 0; + }, 200); + }; + window._qRouterScrollEnabled = true; + setTimeout(()=>{ + window.addEventListener('popstate', window._qRouterInitPopstate); + window.addEventListener('scroll', window._qRouterInitScroll, { + passive: true }); - else { - location.href = url.href; - return void 0; + document.addEventListener('click', window._qRouterInitAnchors); + if (!window.navigation) { + document.addEventListener('visibilitychange', window._qRouterInitVisibility, { + passive: true + }); } - }); - if (!action) CLIENT_DATA_CACHE.set(clientDataPath, qData); + }, 0); + } +}); +const startViewTransition = (params)=>{ + if (!params.update) { + return; } - return qData.then((v)=>{ - if (!v) CLIENT_DATA_CACHE.delete(clientDataPath); - return v; - }); -}; -const getFetchOptions = (action)=>{ - const actionData = action?.data; - if (!actionData) return void 0; - if (actionData instanceof FormData) return { - method: 'POST', - body: actionData - }; - else return { - method: 'POST', - body: JSON.stringify(actionData), - headers: { - 'Content-Type': 'application/json, charset=UTF-8' + if ('startViewTransition' in document) { + let transition; + try { + transition = document.startViewTransition(params); + } catch { + transition = document.startViewTransition(params.update); } - }; + const event = new CustomEvent('qviewtransition', { + detail: transition + }); + document.dispatchEvent(event); + return transition; + } else { + params.update?.(); + } }; -const isQDataJson = (pathname)=>{ - return pathname.endsWith(QDATA_JSON); +const QWIK_CITY_SCROLLER = '_qCityScroller'; +const QWIK_ROUTER_SCROLLER = '_qRouterScroller'; +const preventNav = {}; +const internalState = { + navCount: 0 }; -const QDATA_JSON = '/q-data.json'; -const useContent = ()=>useContext(ContentContext); -const useDocumentHead = ()=>useContext(DocumentHeadContext); -const useLocation = ()=>useContext(RouteLocationContext); -const useNavigate = ()=>useContext(RouteNavigateContext); -const useAction = ()=>useContext(RouteActionContext); -const useQwikRouterEnv = ()=>noSerialize(useServerData('qwikrouter')); -const QwikRouterProvider = /* @__PURE__ */ componentQrl(/* @__PURE__ */ inlinedQrl((props)=>{ - useStylesQrl(/* @__PURE__ */ inlinedQrl(`:root{view-transition-name: none}`, 'QwikRouterProvider_component_useStyles_RPDJAz33WLA')); +const useQwikRouter = (props)=>{ + if (!isServer) { + throw new Error('useQwikRouter can only run during SSR on the server. If you are seeing this, it means you are re-rendering the root of your application. Fix that or use the component around the root of your application.'); + } + useStyles$(transitionCss); const env = useQwikRouterEnv(); - if (!env?.params) throw new Error(`Missing Qwik Router Env Data`); + if (!env?.params) { + throw new Error(`Missing Qwik Router Env Data for help visit https://github.com/QwikDev/qwik/issues/6237`); + } const urlEnv = useServerData('url'); - if (!urlEnv) throw new Error(`Missing Qwik URL Env Data`); + if (!urlEnv) { + throw new Error(`Missing Qwik URL Env Data`); + } + const serverHead = useServerData('documentHead'); + if (env.ev.originalUrl.pathname !== env.ev.url.pathname && !__EXPERIMENTAL__.enableRequestRewrite) { + throw new Error(`enableRequestRewrite is an experimental feature and is not enabled. Please enable the feature flag by adding \`experimental: ["enableRequestRewrite"]\` to your qwikVite plugin options.`); + } const url = new URL(urlEnv); - const routeLocation = useStore({ + const routeLocationTarget = { url, params: env.params, - isNavigating: false - }, { + isNavigating: false, + prevUrl: void 0 + }; + const routeLocation = useStore(routeLocationTarget, { deep: false }); - const loaderState = _weakSerialize(useStore(env.response.loaders, { - deep: false - })); - const navPath = useSignal(toPath(url)); - const documentHead = useStore(createDocumentHead); + const navResolver = {}; + const container = _getContextContainer(); + const getSerializationStrategy = (loaderId)=>{ + return env.response.loadersSerializationStrategy.get(loaderId) || DEFAULT_LOADERS_SERIALIZATION_STRATEGY; + }; + const loadersObject = {}; + const loaderState = {}; + for (const [key, value] of Object.entries(env.response.loaders)){ + loadersObject[key] = value; + loaderState[key] = createLoaderSignal(loadersObject, key, url, getSerializationStrategy(key), container); + } + loadersObject[SerializerSymbol] = (obj)=>{ + const loadersSerializationObject = {}; + for (const [k, v] of Object.entries(obj)){ + loadersSerializationObject[k] = getSerializationStrategy(k) === 'always' ? v : _UNINITIALIZED; + } + return loadersSerializationObject; + }; + const routeInternal = useSignal({ + type: 'initial', + dest: url, + scroll: true + }); + const documentHead = useStore(()=>createDocumentHead(serverHead)); const content = useStore({ headings: void 0, menu: void 0 @@ -1420,27 +2295,112 @@ const QwikRouterProvider = /* @__PURE__ */ componentQrl(/* @__PURE__ */ inlinedQ status: env.response.status } } : void 0); - const goto = eventQrl(/* @__PURE__ */ inlinedQrl(async (path, forceReload)=>{ - const [actionState2, navPath2, routeLocation2] = useLexicalScope(); - if (path === void 0) { - path = navPath2.value; - navPath2.value = ''; - } else if (forceReload) navPath2.value = ''; - const resolvedURL = new URL(path, routeLocation2.url); - path = toPath(resolvedURL); - if (!forceReload && navPath2.value === path) return; - navPath2.value = path; + const registerPreventNav = $((fn$)=>{ + if (!isBrowser) { + return; + } + preventNav.$handler$ ||= (event)=>{ + internalState.navCount++; + if (!preventNav.$cbs$) { + return; + } + const prevents = [ + ...preventNav.$cbs$.values() + ].map((cb)=>cb.resolved ? cb.resolved() : cb()); + if (prevents.some(Boolean)) { + event.preventDefault(); + event.returnValue = true; + } + }; + (preventNav.$cbs$ ||= /* @__PURE__ */ new Set()).add(fn$); + fn$.resolve(); + window.addEventListener('beforeunload', preventNav.$handler$); + return ()=>{ + if (preventNav.$cbs$) { + preventNav.$cbs$.delete(fn$); + if (!preventNav.$cbs$.size) { + preventNav.$cbs$ = void 0; + window.removeEventListener('beforeunload', preventNav.$handler$); + } + } + }; + }); + const goto = $(async (path, opt)=>{ + const { type = 'link', forceReload = path === void 0, // Hack for nav() because this API is already set. + replaceState = false, scroll = true } = typeof opt === 'object' ? opt : { + forceReload: opt + }; + internalState.navCount++; + if (isBrowser && type === 'link' && routeInternal.value.type === 'initial') { + const url2 = new URL(window.location.href); + routeInternal.value.dest = url2; + routeLocation.url = url2; + } + const lastDest = routeInternal.value.dest; + const dest = path === void 0 ? lastDest : typeof path === 'number' ? path : toUrl(path, routeLocation.url); + if (preventNav.$cbs$ && (forceReload || typeof dest === 'number' || !isSamePath(dest, lastDest) || !isSameOrigin(dest, lastDest))) { + const ourNavId = internalState.navCount; + const prevents = await Promise.all([ + ...preventNav.$cbs$.values() + ].map((cb)=>cb(dest))); + if (ourNavId !== internalState.navCount || prevents.some(Boolean)) { + if (ourNavId === internalState.navCount && type === 'popstate') { + history.pushState(null, '', lastDest); + } + return; + } + } + if (typeof dest === 'number') { + if (isBrowser) { + history.go(dest); + } + return; + } + if (!isSameOrigin(dest, lastDest)) { + if (isBrowser) { + location.href = dest.href; + } + return; + } + if (!forceReload && isSamePath(dest, lastDest)) { + if (isBrowser) { + if (type === 'link' && dest.href !== location.href) { + history.pushState(null, '', dest); + } + let scroller = document.getElementById(QWIK_ROUTER_SCROLLER); + if (!scroller) { + scroller = document.getElementById(QWIK_CITY_SCROLLER); + if (scroller && isDev) { + console.warn(`Please update your scroller ID to "${QWIK_ROUTER_SCROLLER}" as "${QWIK_CITY_SCROLLER}" is deprecated and will be removed in V3`); + } + } + if (!scroller) { + scroller = document.documentElement; + } + restoreScroll(type, dest, new URL(location.href), scroller, getScrollHistory()); + if (type === 'popstate') { + window._qRouterScrollEnabled = true; + } + } + return; + } + routeInternal.value = { + type, + dest, + forceReload, + replaceState, + scroll + }; if (isBrowser) { - loadClientData(resolvedURL, _getContextElement()); - loadRoute(qwikRouterConfig.routes, qwikRouterConfig.menus, qwikRouterConfig.cacheModules, resolvedURL.pathname); - } - actionState2.value = void 0; - routeLocation2.isNavigating = true; - }, 'QwikRouterProvider_component_goto_event_cBcjROynRVg', [ - actionState, - navPath, - routeLocation - ])); + loadClientData(dest); + loadRoute(qwikRouterConfig.routes, qwikRouterConfig.menus, qwikRouterConfig.cacheModules, dest.pathname); + } + actionState.value = void 0; + routeLocation.isNavigating = true; + return new Promise((resolve)=>{ + navResolver.r = resolve; + }); + }); useContextProvider(ContentContext, content); useContextProvider(ContentInternalContext, contentInternal); useContextProvider(DocumentHeadContext, documentHead); @@ -1448,100 +2408,315 @@ const QwikRouterProvider = /* @__PURE__ */ componentQrl(/* @__PURE__ */ inlinedQ useContextProvider(RouteNavigateContext, goto); useContextProvider(RouteStateContext, loaderState); useContextProvider(RouteActionContext, actionState); - useTaskQrl(/* @__PURE__ */ inlinedQrl(({ track })=>{ - const [actionState2, content2, contentInternal2, documentHead2, env2, loaderState2, navPath2, props2, routeLocation2, url2] = useLexicalScope(); + useContextProvider(RoutePreventNavigateContext, registerPreventNav); + useTask$(({ track })=>{ async function run() { - const [path, action] = track(()=>[ - navPath2.value, - actionState2.value - ]); + const navigation = track(routeInternal); + const action = track(actionState); const locale = getLocale(''); + const prevUrl = routeLocation.url; + const navType = action ? 'form' : navigation.type; + const replaceState = navigation.replaceState; let trackUrl; let clientPageData; let loadedRoute = null; + let container2; if (isServer) { - trackUrl = new URL(path, routeLocation2.url); - loadedRoute = env2.loadedRoute; - clientPageData = env2.response; + trackUrl = new URL(navigation.dest, routeLocation.url); + loadedRoute = env.loadedRoute; + clientPageData = env.response; } else { - trackUrl = new URL(path, location); + trackUrl = new URL(navigation.dest, location); if (trackUrl.pathname.endsWith('/')) { - if (!qwikRouterConfig.trailingSlash) trackUrl.pathname = trackUrl.pathname.slice(0, -1); - } else if (qwikRouterConfig.trailingSlash) trackUrl.pathname += '/'; + if (globalThis.__NO_TRAILING_SLASH__) { + trackUrl.pathname = trackUrl.pathname.slice(0, -1); + } + } else if (!globalThis.__NO_TRAILING_SLASH__) { + trackUrl.pathname += '/'; + } let loadRoutePromise = loadRoute(qwikRouterConfig.routes, qwikRouterConfig.menus, qwikRouterConfig.cacheModules, trackUrl.pathname); - const element = _getContextElement(); - const pageData = clientPageData = await loadClientData(trackUrl, element, true, action); + container2 = _getContextContainer(); + const pageData = clientPageData = await loadClientData(trackUrl, { + action, + clearCache: true + }); if (!pageData) { - navPath2.untrackedValue = toPath(trackUrl); + routeInternal.untrackedValue = { + type: navType, + dest: trackUrl + }; return; } const newHref = pageData.href; - const newURL = new URL(newHref, trackUrl.href); - if (newURL.pathname !== trackUrl.pathname) { - trackUrl = newURL; - loadRoutePromise = loadRoute(qwikRouterConfig.routes, qwikRouterConfig.menus, qwikRouterConfig.cacheModules, trackUrl.pathname); + const newURL = new URL(newHref, trackUrl); + if (!isSamePath(newURL, trackUrl)) { + if (!pageData.isRewrite) { + trackUrl = newURL; + } + loadRoutePromise = loadRoute(qwikRouterConfig.routes, qwikRouterConfig.menus, qwikRouterConfig.cacheModules, newURL.pathname); + } + try { + loadedRoute = await loadRoutePromise; + } catch (e) { + console.error(e); + window.location.href = newHref; + return; } - loadedRoute = await loadRoutePromise; } if (loadedRoute) { - const [params, mods, menu] = loadedRoute; + const [routeName, params, mods, menu] = loadedRoute; const contentModules = mods; const pageModule = contentModules[contentModules.length - 1]; - routeLocation2.url = trackUrl; - routeLocation2.params = { - ...params + if (navigation.dest.search && !!isSamePath(trackUrl, prevUrl)) { + trackUrl.search = navigation.dest.search; + } + let shouldForcePrevUrl = false; + let shouldForceUrl = false; + let shouldForceParams = false; + if (!isSamePath(trackUrl, prevUrl)) { + if (_hasStoreEffects(routeLocation, 'prevUrl')) { + shouldForcePrevUrl = true; + } + routeLocationTarget.prevUrl = prevUrl; + } + if (routeLocationTarget.url !== trackUrl) { + if (_hasStoreEffects(routeLocation, 'url')) { + shouldForceUrl = true; + } + routeLocationTarget.url = trackUrl; + } + if (routeLocationTarget.params !== params) { + if (_hasStoreEffects(routeLocation, 'params')) { + shouldForceParams = true; + } + routeLocationTarget.params = params; + } + routeInternal.untrackedValue = { + type: navType, + dest: trackUrl }; - navPath2.untrackedValue = toPath(trackUrl); - const resolvedHead = resolveHead(clientPageData, routeLocation2, contentModules, locale); - content2.headings = pageModule.headings; - content2.menu = menu; - contentInternal2.value = noSerialize(contentModules); - documentHead2.links = resolvedHead.links; - documentHead2.meta = resolvedHead.meta; - documentHead2.styles = resolvedHead.styles; - documentHead2.title = resolvedHead.title; - documentHead2.frontmatter = resolvedHead.frontmatter; + const resolvedHead = resolveHead(clientPageData, routeLocation, contentModules, locale, serverHead); + content.headings = pageModule.headings; + content.menu = menu; + contentInternal.untrackedValue = noSerialize(contentModules); + documentHead.links = resolvedHead.links; + documentHead.meta = resolvedHead.meta; + documentHead.styles = resolvedHead.styles; + documentHead.scripts = resolvedHead.scripts; + documentHead.title = resolvedHead.title; + documentHead.frontmatter = resolvedHead.frontmatter; if (isBrowser) { - if ((props2.viewTransition ?? true) && isSameOriginDifferentPathname(window.location, url2)) document.__q_view_transition__ = true; + let scrollState; + if (navType === 'popstate') { + scrollState = getScrollHistory(); + } + const scroller = document.getElementById(QWIK_ROUTER_SCROLLER) ?? document.documentElement; + if (navigation.scroll && (!navigation.forceReload || !isSamePath(trackUrl, prevUrl)) && (navType === 'link' || navType === 'popstate') || navType === 'form' && !isSamePath(trackUrl, prevUrl)) { + document.__q_scroll_restore__ = ()=>restoreScroll(navType, trackUrl, prevUrl, scroller, scrollState); + } const loaders = clientPageData?.loaders; - if (loaders) Object.assign(loaderState2, loaders); + if (loaders) { + const container3 = _getContextContainer(); + for (const [key, value] of Object.entries(loaders)){ + const signal = loaderState[key]; + const awaitedValue = await value; + loadersObject[key] = awaitedValue; + if (!signal) { + loaderState[key] = createLoaderSignal(loadersObject, key, trackUrl, DEFAULT_LOADERS_SERIALIZATION_STRATEGY, container3); + } else { + signal.invalidate(); + } + } + } CLIENT_DATA_CACHE.clear(); - clientNavigate(window, trackUrl, navPath2); - routeLocation2.isNavigating = false; + if (!window._qRouterSPA) { + window._qRouterSPA = true; + history.scrollRestoration = 'manual'; + window.addEventListener('popstate', ()=>{ + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + goto(location.href, { + type: 'popstate' + }); + }); + window.removeEventListener('popstate', window._qRouterInitPopstate); + window._qRouterInitPopstate = void 0; + if (!window._qRouterHistoryPatch) { + window._qRouterHistoryPatch = true; + const pushState = history.pushState; + const replaceState2 = history.replaceState; + const prepareState = (state)=>{ + if (state === null || typeof state === 'undefined') { + state = {}; + } else if (state?.constructor !== Object) { + state = { + _data: state + }; + if (isDev) { + console.warn('In a Qwik SPA context, `history.state` is used to store scroll state. Direct calls to `pushState()` and `replaceState()` must supply an actual Object type. We need to be able to automatically attach the scroll state to your state object. A new state object has been created, your data has been moved to: `history.state._data`'); + } + } + state._qRouterScroll = state._qRouterScroll || currentScrollState(scroller); + return state; + }; + history.pushState = (state, title, url2)=>{ + state = prepareState(state); + return pushState.call(history, state, title, url2); + }; + history.replaceState = (state, title, url2)=>{ + state = prepareState(state); + return replaceState2.call(history, state, title, url2); + }; + } + document.addEventListener('click', (event)=>{ + if (event.defaultPrevented) { + return; + } + const target = event.target.closest('a[href]'); + if (target && !target.hasAttribute('preventdefault:click')) { + const href = target.getAttribute('href'); + const prev = new URL(location.href); + const dest = new URL(href, prev); + if (isSameOrigin(dest, prev) && isSamePath(dest, prev)) { + event.preventDefault(); + if (!dest.hash && !dest.href.endsWith('#')) { + if (dest.href !== prev.href) { + history.pushState(null, '', dest); + } + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + saveScrollHistory({ + ...currentScrollState(scroller), + x: 0, + y: 0 + }); + location.reload(); + return; + } + goto(target.getAttribute('href')); + } + } + }); + document.removeEventListener('click', window._qRouterInitAnchors); + window._qRouterInitAnchors = void 0; + if (!window.navigation) { + document.addEventListener('visibilitychange', ()=>{ + if ((window._qRouterScrollEnabled || window._qCityScrollEnabled) && document.visibilityState === 'hidden') { + if (window._qCityScrollEnabled) { + console.warn('"_qCityScrollEnabled" is deprecated. Use "_qRouterScrollEnabled" instead.'); + } + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + } + }, { + passive: true + }); + document.removeEventListener('visibilitychange', window._qRouterInitVisibility); + window._qRouterInitVisibility = void 0; + } + window.addEventListener('scroll', ()=>{ + if (!window._qRouterScrollEnabled && !window._qCityScrollEnabled) { + return; + } + clearTimeout(window._qRouterScrollDebounce); + window._qRouterScrollDebounce = setTimeout(()=>{ + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + window._qRouterScrollDebounce = void 0; + }, 200); + }, { + passive: true + }); + removeEventListener('scroll', window._qRouterInitScroll); + window._qRouterInitScroll = void 0; + spaInit.resolve(); + } + if (navType !== 'popstate') { + window._qRouterScrollEnabled = false; + clearTimeout(window._qRouterScrollDebounce); + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + } + const navigate = ()=>{ + clientNavigate(window, navType, prevUrl, trackUrl, replaceState); + contentInternal.trigger(); + return _waitUntilRendered(container2); + }; + const _waitNextPage = ()=>{ + if (isServer || props?.viewTransition === false) { + return navigate(); + } else { + const viewTransition = startViewTransition({ + update: navigate, + types: [ + 'qwik-navigation' + ] + }); + if (!viewTransition) { + return Promise.resolve(); + } + return viewTransition.ready; + } + }; + _waitNextPage().catch((err)=>{ + navigate(); + throw err; + }).finally(()=>{ + container2.element.setAttribute?.(Q_ROUTE, routeName); + const scrollState2 = currentScrollState(scroller); + saveScrollHistory(scrollState2); + window._qRouterScrollEnabled = true; + if (isBrowser) { + callRestoreScrollOnDocument(); + } + if (shouldForcePrevUrl) { + forceStoreEffects(routeLocation, 'prevUrl'); + } + if (shouldForceUrl) { + forceStoreEffects(routeLocation, 'url'); + } + if (shouldForceParams) { + forceStoreEffects(routeLocation, 'params'); + } + routeLocation.isNavigating = false; + navResolver.r?.(); + }); } } } - const promise = run(); - if (isServer) return promise; - else return; - }, 'QwikRouterProvider_component_useTask_02wMImzEAbk', [ - actionState, - content, - contentInternal, - documentHead, - env, - loaderState, - navPath, - props, - routeLocation, - url - ])); - return /* @__PURE__ */ _jsxSplit(Slot, null, 3, 'qY_0'); -}, 'QwikRouterProvider_component_TxCFOy819ag')); -const QwikRouterMockProvider = /* @__PURE__ */ componentQrl(/* @__PURE__ */ inlinedQrl((props)=>{ + if (isServer) { + return run(); + } else { + run(); + } + }); +}; +const QwikRouterProvider = component$((props)=>{ + useQwikRouter(props); + return /* @__PURE__ */ jsx(Slot, {}); +}); +const QwikCityProvider = QwikRouterProvider; +const useQwikMockRouter = (props)=>{ const urlEnv = props.url ?? 'http://localhost/'; const url = new URL(urlEnv); const routeLocation = useStore({ url, params: props.params ?? {}, - isNavigating: false + isNavigating: false, + prevUrl: void 0 }, { deep: false }); - const loaderState = useSignal({}); - const goto = /* @__PURE__ */ inlinedQrl(async (path)=>{ - throw new Error('Not implemented'); - }, 'QwikRouterMockProvider_component_goto_BUbtvTyvVRE'); + const loadersData = props.loaders?.reduce((acc, { loader, data })=>{ + acc[loader.__id] = data; + return acc; + }, {}); + const loaderState = useStore(loadersData ?? {}, { + deep: false + }); + const goto = props.goto ?? $(async ()=>{ + console.warn('QwikRouterMockProvider: goto not provided'); + }); const documentHead = useStore(createDocumentHead, { deep: false }); @@ -1552,53 +2727,75 @@ const QwikRouterMockProvider = /* @__PURE__ */ componentQrl(/* @__PURE__ */ inli deep: false }); const contentInternal = useSignal(); + const actionState = useSignal(); useContextProvider(ContentContext, content); useContextProvider(ContentInternalContext, contentInternal); useContextProvider(DocumentHeadContext, documentHead); useContextProvider(RouteLocationContext, routeLocation); useContextProvider(RouteNavigateContext, goto); useContextProvider(RouteStateContext, loaderState); - return /* @__PURE__ */ _jsxSplit(Slot, null, 3, 'qY_1'); -}, 'QwikRouterMockProvider_component_WmYC5H00wtI')); -const Link = /* @__PURE__ */ componentQrl(/* @__PURE__ */ inlinedQrl((props)=>{ - const nav = useNavigate(); - const loc = useLocation(); - const linkProps = { - ...props - }; - const clientNavPath = untrack(()=>getClientNavPath(linkProps, loc)); - const prefetchDataset = untrack(()=>getPrefetchDataset(props, clientNavPath, loc)); - const reload = !!linkProps.reload; - linkProps['preventdefault:click'] = !!clientNavPath; - linkProps.href = clientNavPath || props.href; - const event = eventQrl(/* @__PURE__ */ inlinedQrl((ev, elm)=>prefetchLinkResources(elm, ev.type === 'qvisible'), 'Link_component_event_event_5g4B0Gd1Wck')); - return /* @__PURE__ */ _jsxSplit('a', { - ...linkProps, - 'data-prefetch': prefetchDataset, - children: /* @__PURE__ */ _jsxSplit(Slot, null, null, 3, 'AD_0'), - onClick$: /* @__PURE__ */ inlinedQrl((_, elm)=>{ - const [nav2, reload2] = useLexicalScope(); - if (elm.href) nav2(elm.href, reload2); - }, 'Link_component_a_onClick_kzjavhDI3L0', [ - nav, - reload - ]), - onMouseOver$: event, - onFocus$: event, - onQVisible$: event - }, null, 0, 'AD_1'); -}, 'Link_component_8gdLBszqbaM')); -const prefetchLinkResources = (elm, isOnVisible)=>{ - if (elm && elm.href && elm.hasAttribute('data-prefetch')) { - if (!windowInnerWidth) windowInnerWidth = innerWidth; - if (!isOnVisible || isOnVisible && windowInnerWidth < 520) loadClientData(new URL(elm.href), elm); - } + useContextProvider(RouteActionContext, actionState); + const actionsMocks = props.actions?.reduce((acc, { action, handler })=>{ + acc[action.__id] = handler; + return acc; + }, {}); + useTask$(async ({ track })=>{ + const action = track(actionState); + if (!action?.resolve) { + return; + } + const mock = actionsMocks?.[action.id]; + if (mock) { + const actionResult = await mock(action.data); + action.resolve(actionResult); + } + }); }; -let windowInnerWidth = 0; -const ServiceWorkerRegister = (props)=>_jsxSplit('script', null, { - nonce: _wrapSignal(props, 'nonce'), - dangerouslySetInnerHTML: swRegister - }, 3, '1Z_0'); +const QwikRouterMockProvider = component$((props)=>{ + useQwikMockRouter(props); + return /* @__PURE__ */ jsx(Slot, {}); +}); +const QwikCityMockProvider = QwikRouterMockProvider; +const RouterOutlet = component$(()=>{ + const serverData = useServerData('containerAttributes'); + if (!serverData) { + throw new Error('PrefetchServiceWorker component must be rendered on the server.'); + } + const internalContext = useContext(ContentInternalContext); + const contents = internalContext.value; + if (contents && contents.length > 0) { + const contentsLen = contents.length; + let cmp = null; + for(let i = contentsLen - 1; i >= 0; i--){ + if (contents[i].default) { + cmp = jsx$1(contents[i].default, { + children: cmp + }); + } + } + return /* @__PURE__ */ jsxs(Fragment, { + children: [ + cmp, + !__EXPERIMENTAL__.noSPA && /* @__PURE__ */ jsx('script', { + 'document:onQCInit$': spaInit, + 'document:onQInit$': sync$(()=>{ + ((w, h)=>{ + if (!w._qcs && h.scrollRestoration === 'manual') { + w._qcs = true; + const s = h.state?._qRouterScroll; + if (s) { + w.scrollTo(s.x, s.y); + } + document.dispatchEvent(new Event('qcinit')); + } + })(window, history); + }) + }) + ] + }); + } + return SkipRender; +}); const routeActionQrl = (actionQrl, ...rest)=>{ const { id, validators } = getValidators(rest, actionQrl); function action() { @@ -1606,6 +2803,7 @@ const routeActionQrl = (actionQrl, ...rest)=>{ const currentAction = useAction(); const initialState = { actionPath: `?${QACTION_KEY}=${id}`, + submitted: false, isRunning: false, status: void 0, value: void 0, @@ -1615,7 +2813,9 @@ const routeActionQrl = (actionQrl, ...rest)=>{ const value = currentAction.value; if (value && value?.id === id) { const data = value.data; - if (data instanceof FormData) initialState.formData = data; + if (data instanceof FormData) { + initialState.formData = data; + } if (value.output) { const { status, result } = value.output; initialState.status = status; @@ -1624,34 +2824,44 @@ const routeActionQrl = (actionQrl, ...rest)=>{ } return initialState; }); - const submit = /* @__PURE__ */ inlinedQrl((input = {})=>{ - const [currentAction2, id2, loc2, state2] = useLexicalScope(); - if (isServer) throw new Error(`Actions can not be invoked within the server during SSR. + const submit = $((input = {})=>{ + if (isServer) { + throw new Error(`Actions can not be invoked within the server during SSR. Action.run() can only be called on the browser, for example when a user clicks a button, or submits a form.`); + } let data; let form; if (input instanceof SubmitEvent) { form = input.target; data = new FormData(form); if ((input.submitter instanceof HTMLInputElement || input.submitter instanceof HTMLButtonElement) && input.submitter.name) { - if (input.submitter.name) data.append(input.submitter.name, input.submitter.value); + if (input.submitter.name) { + data.append(input.submitter.name, input.submitter.value); + } } - } else data = input; + } else { + data = input; + } return new Promise((resolve)=>{ - if (data instanceof FormData) state2.formData = data; - state2.isRunning = true; - loc2.isNavigating = true; - currentAction2.value = { + if (data instanceof FormData) { + state.formData = data; + } + state.submitted = true; + state.isRunning = true; + loc.isNavigating = true; + currentAction.value = { data, - id: id2, + id, resolve: noSerialize(resolve) }; }).then(({ result, status })=>{ - state2.isRunning = false; - state2.status = status; - state2.value = result; + state.isRunning = false; + state.status = status; + state.value = result; if (form) { - if (form.getAttribute('data-spa-reset') === 'true') form.reset(); + if (form.getAttribute('data-spa-reset') === 'true') { + form.reset(); + } const detail = { status, value: result @@ -1668,12 +2878,7 @@ Action.run() can only be called on the browser, for example when a user clicks a value: result }; }); - }, 'routeActionQrl_action_submit_A5bZC7WO00A', [ - currentAction, - id, - loc, - state - ]); + }); initialState.submit = submit; return state; } @@ -1687,56 +2892,156 @@ Action.run() can only be called on the browser, for example when a user clicks a const globalActionQrl = (actionQrl, ...rest)=>{ const action = routeActionQrl(actionQrl, ...rest); if (isServer) { - if (typeof globalThis._qwikActionsMap === 'undefined') globalThis._qwikActionsMap = /* @__PURE__ */ new Map(); + if (typeof globalThis._qwikActionsMap === 'undefined') { + globalThis._qwikActionsMap = /* @__PURE__ */ new Map(); + } globalThis._qwikActionsMap.set(action.__id, action); } return action; }; const routeAction$ = /* @__PURE__ */ implicit$FirstArg(routeActionQrl); const globalAction$ = /* @__PURE__ */ implicit$FirstArg(globalActionQrl); +const getValue = (obj)=>obj.value; const routeLoaderQrl = (loaderQrl, ...rest)=>{ - const { id, validators } = getValidators(rest, loaderQrl); + const { id, validators, serializationStrategy } = getValidators(rest, loaderQrl); function loader() { - return useContext(RouteStateContext, (state)=>{ - if (!(id in state)) throw new Error(`Loader (${id}) was used in a path where the 'loader$' was not declared. - This is likely because the used loader was not exported in a layout.tsx or index.tsx file of the existing route. - For more information check: https://qwik.dev/docs/route-loader/`); - return _wrapSignal(state, id); - }); + const state = _resolveContextWithoutSequentialScope(RouteStateContext); + if (!(id in state)) { + throw new Error(`routeLoader$ "${loaderQrl.getSymbol()}" was invoked in a route where it was not declared. + This is because the routeLoader$ was not exported in a 'layout.tsx' or 'index.tsx' file of the existing route. + For more information check: https://qwik.dev/docs/route-loader/ + + If your are managing reusable logic or a library it is essential that this function is re-exported from within 'layout.tsx' or 'index.tsx file of the existing route otherwise it will not run or throw exception. + For more information check: https://qwik.dev/docs/re-exporting-loaders/`); + } + const loaderData = state[id]; + untrack(getValue, loaderData); + return loaderData; } loader.__brand = 'server_loader'; loader.__qrl = loaderQrl; loader.__validators = validators; loader.__id = id; + loader.__serializationStrategy = serializationStrategy; + loader.__expires = -1; Object.freeze(loader); return loader; }; const routeLoader$ = /* @__PURE__ */ implicit$FirstArg(routeLoaderQrl); const validatorQrl = (validator)=>{ - if (isServer) return { - validate: validator - }; + if (isServer) { + return { + validate: validator + }; + } return void 0; }; const validator$ = /* @__PURE__ */ implicit$FirstArg(validatorQrl); +const flattenValibotIssues = (issues)=>{ + return issues.reduce((acc, issue)=>{ + if (issue.path) { + const hasArrayType = issue.path.some((path)=>path.type === 'array'); + if (hasArrayType) { + const keySuffix = issue.expected === 'Array' ? '[]' : ''; + const key = issue.path.map((item)=>item.type === 'array' ? '*' : item.key).join('.').replace(/\.\*/g, '[]') + keySuffix; + acc[key] = acc[key] || []; + if (Array.isArray(acc[key])) { + acc[key].push(issue.message); + } + return acc; + } else { + acc[issue.path.map((item)=>item.key).join('.')] = issue.message; + } + } + return acc; + }, {}); +}; +const valibotQrl = (qrl)=>{ + if (!__EXPERIMENTAL__.valibot) { + throw new Error('Valibot is an experimental feature and is not enabled. Please enable the feature flag by adding `experimental: ["valibot"]` to your qwikVite plugin options.'); + } + if (isServer) { + return { + __brand: 'valibot', + async validate (ev, inputData) { + const schema = await qrl.resolve().then((obj)=>typeof obj === 'function' ? obj(ev) : obj); + const data = inputData ?? await ev.parseBody(); + const result = await v.safeParseAsync(schema, data); + if (result.success) { + return { + success: true, + data: result.output + }; + } else { + if (isDev) { + console.error('ERROR: Valibot validation failed', result.issues); + } + return { + success: false, + status: 400, + error: { + formErrors: v.flatten(result.issues).root ?? [], + fieldErrors: flattenValibotIssues(result.issues) + } + }; + } + } + }; + } + return void 0; +}; +const valibot$ = /* @__PURE__ */ implicit$FirstArg(valibotQrl); +const flattenZodIssues = (issues)=>{ + issues = Array.isArray(issues) ? issues : [ + issues + ]; + return issues.reduce((acc, issue)=>{ + const isExpectingArray = 'expected' in issue && issue.expected === 'array'; + const hasArrayType = issue.path.some((path)=>typeof path === 'number') || isExpectingArray; + if (hasArrayType) { + const keySuffix = 'expected' in issue && issue.expected === 'array' ? '[]' : ''; + const key = issue.path.map((path)=>typeof path === 'number' ? '*' : path).join('.').replace(/\.\*/g, '[]') + keySuffix; + acc[key] = acc[key] || []; + if (Array.isArray(acc[key])) { + acc[key].push(issue.message); + } + return acc; + } else { + acc[issue.path.join('.')] = issue.message; + } + return acc; + }, {}); +}; const zodQrl = (qrl)=>{ if (isServer) { - const schema = qrl.resolve().then((obj)=>{ - if (typeof obj === 'function') obj = obj(z); - if (obj instanceof z.Schema) return obj; - else return z.object(obj); - }); return { + __brand: 'zod', async validate (ev, inputData) { + const schema = await qrl.resolve().then((obj)=>{ + if (typeof obj === 'function') { + obj = obj(z, ev); + } + if (obj instanceof z.Schema) { + return obj; + } else { + return z.object(obj); + } + }); const data = inputData ?? await ev.parseBody(); - const result = await (await schema).safeParseAsync(data); - if (result.success) return result; - else { - if (isDev) console.error('\nVALIDATION ERROR\naction$() zod validated failed', '\n - Issues:', result.error.issues); + const result = await withLocale(ev.locale(), ()=>schema.safeParseAsync(data)); + if (result.success) { + return result; + } else { + if (isDev) { + console.error('ERROR: Zod validation failed', result.error.issues); + } return { success: false, status: 400, - error: result.error.flatten() + error: { + formErrors: result.error.flatten().formErrors, + fieldErrors: flattenZodIssues(result.error.issues) + } }; } } @@ -1745,171 +3050,254 @@ const zodQrl = (qrl)=>{ return void 0; }; const zod$ = /* @__PURE__ */ implicit$FirstArg(zodQrl); -const serverQrl = (qrl)=>{ +const serverQrl = (qrl, options)=>{ if (isServer) { const captured = qrl.getCaptured(); - if (captured && captured.length > 0 && !_getContextElement()) throw new Error('For security reasons, we cannot serialize QRLs that capture lexical scope.'); + if (captured && captured.length > 0 && !_getContextHostElement()) { + throw new Error('For security reasons, we cannot serialize QRLs that capture lexical scope.'); + } } - function stuff() { - return /* @__PURE__ */ inlinedQrl(async (...args)=>{ - const [qrl2] = useLexicalScope(); - if (isServer) { - const requestEvent = useQwikRouterEnv()?.ev; - return qrl2.apply(requestEvent, args); + const method = options?.method?.toUpperCase?.() || 'POST'; + const headers = options?.headers || {}; + const origin = options?.origin || ''; + const fetchOptions = options?.fetchOptions || {}; + return $(async function(...args) { + const abortSignal = args.length > 0 && args[0] instanceof AbortSignal ? args.shift() : void 0; + if (isServer) { + let requestEvent = _asyncRequestStore?.getStore(); + if (!requestEvent) { + const contexts = [ + useQwikRouterEnv()?.ev, + this, + _getContextEvent() + ]; + requestEvent = contexts.find((v2)=>v2 && Object.prototype.hasOwnProperty.call(v2, 'sharedMap') && Object.prototype.hasOwnProperty.call(v2, 'cookie')); + } + return qrl.apply(requestEvent, args); + } else { + let filteredArgs = args.map((arg)=>{ + if (arg instanceof SubmitEvent && arg.target instanceof HTMLFormElement) { + return new FormData(arg.target); + } else if (arg instanceof Event) { + return null; + } else if (arg instanceof Node) { + return null; + } + return arg; + }); + if (!filteredArgs.length) { + filteredArgs = void 0; + } + const qrlHash = qrl.getHash(); + let query = ''; + const config = { + ...fetchOptions, + method, + headers: { + ...headers, + 'Content-Type': 'application/qwik-json', + Accept: 'application/json, application/qwik-json, text/qwik-json-stream, text/plain', + // Required so we don't call accidentally + 'X-QRL': qrlHash + }, + signal: abortSignal + }; + const captured = qrl.getCaptured(); + let toSend = [ + filteredArgs + ]; + if (captured?.length) { + toSend = [ + filteredArgs, + ...captured + ]; } else { - const ctxElm = _getContextElement(); - const filtered = args.map((arg)=>{ - if (arg instanceof SubmitEvent && arg.target instanceof HTMLFormElement) return new FormData(arg.target); - else if (arg instanceof Event) return null; - else if (arg instanceof Node) return null; - return arg; - }); - const hash = qrl2.getHash(); - const path = `?qfunc=${qrl2.getHash()}`; - const body = await _serializeData([ - qrl2, - ...filtered - ], false); - const res = await fetch(path, { - method: 'POST', - headers: { - 'Content-Type': 'application/qwik-json', - 'X-QRL': hash - }, - body - }); - const contentType = res.headers.get('Content-Type'); - if (res.ok && contentType === 'text/event-stream') { - const { writable, readable } = getSSETransformer(); - res.body?.pipeTo(writable); - return streamAsyncIterator(readable, ctxElm ?? document.documentElement); - } else if (contentType === 'application/qwik-json') { - const str = await res.text(); - const obj = await _deserializeData(str, ctxElm ?? document.documentElement); - if (res.status === 500) throw obj; - return obj; + toSend = filteredArgs ? [ + filteredArgs + ] : []; + } + const body = await _serialize(toSend); + if (method === 'GET') { + query += `&${QDATA_KEY}=${encodeURIComponent(body)}`; + } else { + config.body = body; + } + const res = await fetch(`${origin}?${QFN_KEY}=${qrlHash}${query}`, config); + const contentType = res.headers.get('Content-Type'); + if (res.ok && contentType === 'text/qwik-json-stream' && res.body) { + return async function*() { + try { + for await (const result of deserializeStream(res.body, abortSignal)){ + yield result; + } + } finally{ + if (!abortSignal?.aborted) { + await res.body.cancel(); + } + } + }(); + } else if (contentType === 'application/qwik-json') { + const str = await res.text(); + const obj = _deserialize(str); + if (res.status >= 400) { + throw obj; + } + return obj; + } else if (contentType === 'application/json') { + const obj = await res.json(); + if (res.status >= 400) { + throw obj; + } + return obj; + } else if (contentType === 'text/plain' || contentType === 'text/html') { + const str = await res.text(); + if (res.status >= 400) { + throw str; } + return str; } - }, 'serverQrl_stuff_wOIPfiQ04l4', [ - qrl - ]); - } - return stuff(); + } + }); }; const server$ = /* @__PURE__ */ implicit$FirstArg(serverQrl); const getValidators = (rest, qrl)=>{ let id; + let serializationStrategy = DEFAULT_LOADERS_SERIALIZATION_STRATEGY; const validators = []; if (rest.length === 1) { const options = rest[0]; if (options && typeof options === 'object') { - if ('validate' in options) validators.push(options); - else { + if ('validate' in options) { + validators.push(options); + } else { id = options.id; - if (options.validation) validators.push(...options.validation); + if (options.serializationStrategy) { + serializationStrategy = options.serializationStrategy; + } + if (options.validation) { + validators.push(...options.validation); + } } } - } else if (rest.length > 1) validators.push(...rest.filter((v)=>!!v)); + } else if (rest.length > 1) { + validators.push(...rest.filter((v2)=>!!v2)); + } if (typeof id === 'string') { if (isDev) { - if (!/^[\w/.-]+$/.test(id)) throw new Error(`Invalid id: ${id}, id can only contain [a-zA-Z0-9_.-]`); + if (!/^[\w/.-]+$/.test(id)) { + throw new Error(`Invalid id: ${id}, id can only contain [a-zA-Z0-9_.-]`); + } } id = `id_${id}`; - } else id = qrl.getHash(); + } else { + id = qrl.getHash(); + } return { validators: validators.reverse(), - id - }; -}; -const getSSETransformer = ()=>{ - let currentLine = ''; - const encoder = new TextDecoder(); - const transformer = new TransformStream({ - transform (chunk, controller) { - const lines = encoder.decode(chunk).split('\n\n'); - for(let i = 0; i < lines.length - 1; i++){ - const line = currentLine + lines[i]; - if (line.length === 0) { - controller.terminate(); - break; - } else { - controller.enqueue(parseEvent(line)); - currentLine = ''; - } - } - currentLine += lines[lines.length - 1]; - } - }); - return transformer; -}; -const parseEvent = (message)=>{ - const lines = message.split('\n'); - const event = { - data: '' + id, + serializationStrategy }; - let data = ''; - for (const line of lines)if (line.startsWith('data: ')) data += line.slice(6) + '\n'; - else { - const [key, value] = line.split(':'); - if (typeof key === 'string' && typeof value === 'string') event[key] = value.trim(); - } - event.data = data; - return event; }; -async function* streamAsyncIterator(stream, ctxElm) { +const deserializeStream = async function*(stream, abortSignal) { const reader = stream.getReader(); try { - while(true){ - const { done, value } = await reader.read(); - if (done) return; - const obj = await _deserializeData(value.data, ctxElm); - yield obj; + let buffer = ''; + const decoder = new TextDecoder(); + while(!abortSignal?.aborted){ + const result = await reader.read(); + if (result.done) { + break; + } + buffer += decoder.decode(result.value, { + stream: true + }); + const lines = buffer.split(/\n/); + buffer = lines.pop(); + for (const line of lines){ + const deserializedData = _deserialize(line); + yield deserializedData; + } } } finally{ reader.releaseLock(); } -} +}; +const ServiceWorkerRegister = (props)=>/* @__PURE__ */ jsx('script', { + type: 'module', + dangerouslySetInnerHTML: swRegister, + nonce: props.nonce + }); const Form = ({ action, spaReset, reloadDocument, onSubmit$, ...rest }, key)=>{ - _jsxBranch(); - if (action) return _jsxSplit('form', { - ...rest, - action: _wrapSignal(action, 'actionPath'), - 'preventdefault:submit': !reloadDocument, - ['data-spa-reset']: spaReset ? 'true' : void 0, - onSubmit$: [ - !reloadDocument ? action.submit : void 0, - onSubmit$ - ] - }, { - method: 'post' - }, 0, key); - else return /* @__PURE__ */ _jsxSplit(GetForm, { - spaReset, - reloadDocument, - onSubmit$, - ...rest - }, 0, key); + if (action) { + const isArrayApi = Array.isArray(onSubmit$); + if (isArrayApi) { + return jsx$1('form', { + ...rest, + action: action.actionPath, + 'preventdefault:submit': !reloadDocument, + onSubmit$: [ + ...onSubmit$, + // action.submit "submitcompleted" event for onSubmitCompleted$ events + !reloadDocument ? $((evt)=>{ + if (!action.submitted) { + return action.submit(evt); + } + }) : void 0 + ], + method: 'post', + ['data-spa-reset']: spaReset ? 'true' : void 0 + }, key); + } + return jsx$1('form', { + ...rest, + action: action.actionPath, + 'preventdefault:submit': !reloadDocument, + onSubmit$: [ + // Since v2, this fires before the action is executed so it can be prevented + onSubmit$, + // action.submit "submitcompleted" event for onSubmitCompleted$ events + !reloadDocument ? action.submit : void 0 + ], + method: 'post', + ['data-spa-reset']: spaReset ? 'true' : void 0 + }, key); + } else { + return /* @__PURE__ */ jsx(GetForm, { + spaReset, + reloadDocument, + onSubmit$, + ...rest + }, key); + } }; -const GetForm = /* @__PURE__ */ componentQrl(/* @__PURE__ */ inlinedQrl((props)=>{ - const rest = _restProps(props, [ - 'action', - 'spaReset', - 'reloadDocument', - 'onSubmit$' - ]); +const GetForm = component$(({ action: _0, spaReset, reloadDocument, onSubmit$, ...rest })=>{ const nav = useNavigate(); - return /* @__PURE__ */ _jsxSplit('form', { + return /* @__PURE__ */ jsx('form', { + action: 'get', + 'preventdefault:submit': !reloadDocument, + 'data-spa-reset': spaReset ? 'true' : void 0, ...rest, - children: /* @__PURE__ */ _jsxSplit(Slot, null, 3, 'BC_0'), - onSubmit$: /* @__PURE__ */ inlinedQrl(async (_, form)=>{ - const [nav2] = useLexicalScope(); - const formData = new FormData(form); - const params = new URLSearchParams(); - formData.forEach((value, key)=>{ - if (typeof value === 'string') params.append(key, value); - }); - nav2('?' + params.toString(), true).then(()=>{ - if (form.getAttribute('data-spa-reset') === 'true') form.reset(); + onSubmit$: [ + ...Array.isArray(onSubmit$) ? onSubmit$ : [ + onSubmit$ + ], + $(async (_evt, form)=>{ + const formData = new FormData(form); + const params = new URLSearchParams(); + formData.forEach((value, key)=>{ + if (typeof value === 'string') { + params.append(key, value); + } + }); + await nav('?' + params.toString(), { + type: 'form', + forceReload: true + }); + }), + $((_evt, form)=>{ + if (form.getAttribute('data-spa-reset') === 'true') { + form.reset(); + } form.dispatchEvent(new CustomEvent('submitcompleted', { bubbles: false, cancelable: false, @@ -1918,24 +3306,95 @@ const GetForm = /* @__PURE__ */ componentQrl(/* @__PURE__ */ inlinedQrl((props)= status: 200 } })); - }); - }, 'GetForm_component_form_onSubmit_p9MSze0ojs4', [ - nav - ]) - }, { - action: 'get', - 'preventdefault:submit': _fnSignal((p0)=>!p0.reloadDocument, [ - props - ], '!p0.reloadDocument'), - 'data-spa-reset': _fnSignal((p0)=>p0.spaReset ? 'true' : void 0, [ - props - ], 'p0.spaReset?"true":undefined') - }, 0, 'BC_1'); -}, 'GetForm_component_Nk9PlpjQm9Y')); -export { Form, globalAction$, globalActionQrl, Link, QwikRouterMockProvider, QwikRouterProvider as QwikRouterProvider, routeAction$, routeActionQrl, routeLoader$, routeLoaderQrl, RouterOutlet, server$, serverQrl, ServiceWorkerRegister, useContent, useDocumentHead, useLocation, useNavigate, validator$, validatorQrl, z2 as z, zod$, zodQrl }; + }) + ], + children: /* @__PURE__ */ jsx(Slot, {}) + }); +}); +const untypedAppUrl = function appUrl(route, params, paramsPrefix = '') { + const path = route.split('/'); + for(let i = 0; i < path.length; i++){ + const segment = path[i]; + if (segment.startsWith('[') && segment.endsWith(']')) { + const isSpread = segment.startsWith('[...'); + const key = segment.substring(segment.startsWith('[...') ? 4 : 1, segment.length - 1); + const value = params ? params[paramsPrefix + key] || params[key] : ''; + path[i] = isSpread ? value : encodeURIComponent(value); + } + if (segment.startsWith('(') && segment.endsWith(')')) { + path.splice(i, 1); + } + } + let url = path.join('/'); + let baseURL = '/'; + if (baseURL) { + if (!baseURL.endsWith('/')) { + baseURL += '/'; + } + while(url.startsWith('/')){ + url = url.substring(1); + } + url = baseURL + url; + } + return url; +}; +function omitProps(obj, keys) { + const omittedObj = {}; + for(const key in obj){ + if (!key.startsWith('param:') && !keys.includes(key)) { + omittedObj[key] = obj[key]; + } + } + return omittedObj; +} +const createRenderer = (getOptions)=>{ + return (opts)=>{ + const { jsx, options } = getOptions(opts); + return renderToStream(jsx, options); + }; +}; +const DocumentHeadTags = component$((props)=>{ + let head = useDocumentHead(); + if (props) { + head = { + ...head, + ...props + }; + } + return /* @__PURE__ */ jsxs(Fragment, { + children: [ + head.title && /* @__PURE__ */ jsx('title', { + children: head.title + }), + head.meta.map((m)=>/* @__PURE__ */ jsx('meta', { + ...m + })), + head.links.map((l)=>/* @__PURE__ */ jsx('link', { + ...l + })), + head.styles.map((s)=>{ + const props2 = s.props || s; + return /* @__PURE__ */ createElement('style', { + ...props2, + dangerouslySetInnerHTML: s.style || props2.dangerouslySetInnerHTML, + key: s.key + }); + }), + head.scripts.map((s)=>{ + const props2 = s.props || s; + return /* @__PURE__ */ createElement('script', { + ...props2, + dangerouslySetInnerHTML: s.script || props2.dangerouslySetInnerHTML, + key: s.key + }); + }) + ] + }); +}); +export { DocumentHeadTags, ErrorBoundary, Form, Link, QWIK_CITY_SCROLLER, QWIK_ROUTER_SCROLLER, QwikCityMockProvider, QwikCityProvider, QwikRouterMockProvider, QwikRouterProvider, RouterOutlet, ServiceWorkerRegister, createRenderer, globalAction$, globalActionQrl, omitProps, routeAction$, routeActionQrl, routeLoader$, routeLoaderQrl, server$, serverQrl, untypedAppUrl, useContent, useDocumentHead, useLocation, useNavigate, usePreventNavigate$, usePreventNavigateQrl, useQwikRouter, valibot$, valibotQrl, validator$, validatorQrl, zod$, zodQrl }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\"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\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/node_modules/@qwik.dev/router/index.qwik.mjs\"],\"names\":[],\"mappings\":\"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\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments.snap index 6567574cc89..b23d1d95f60 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments.snap @@ -28,19 +28,22 @@ import { inlinedQrl } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { _noopQrl } from "@qwik.dev/core"; import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; -export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((props)=>{ +const Works_component_Fragment_div_q_e_click_server_YY85RDCwwvA = /*#__PURE__*/ _regSymbol(()=>console.log('in server', 'hola'), "YY85RDCwwvA"); +const _qrl_qrl_4294901762 = /*#__PURE__*/ _noopQrl("Works_component_Fragment_div_q_e_click_0UiSo8yqgZw"); +const Works_component_t45qL4vNGv0 = (props)=>{ return /*#__PURE__*/ _jsxSorted(_Fragment, null, null, [ /*#__PURE__*/ _jsxSorted("div", { - "q-e:click": serverQrl(/*#__PURE__*/ inlinedQrl(/*#__PURE__*/ _regSymbol(()=>console.log('in server', 'hola'), "YY85RDCwwvA"), "Works_component_Fragment_div_q_e_click_server_YY85RDCwwvA")) + "q-e:click": serverQrl(/*#__PURE__*/ inlinedQrl(Works_component_Fragment_div_q_e_click_server_YY85RDCwwvA, "Works_component_Fragment_div_q_e_click_server_YY85RDCwwvA")) }, null, null, 2, null), /*#__PURE__*/ _jsxSorted("div", null, { - "q-e:click": /*#__PURE__*/ _noopQrl("Works_component_Fragment_div_q_e_click_0UiSo8yqgZw") + "q-e:click": _qrl_qrl_4294901762 }, null, 3, null) ], 1, "u6_0"); -}, "Works_component_t45qL4vNGv0")); +}; +export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(Works_component_t45qL4vNGv0, "Works_component_t45qL4vNGv0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;AAGA,OAAO,MAAM,sBAAQ,sCAAW,CAAC;IAEhC,qBACC;sBACA,WAAC;YAAI,aAAU,4DAAQ,IAAM,QAAQ,GAAG,CAAC,aAH7B;;sBAIZ,WAAC;YAAI,WAAQ;;;AAGf,mCAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;2FAOyB,IAAM,QAAQ,GAAG,CAAC,aAH7B;;oCADkB,CAAC;IAEhC,qBACC;sBACA,WAAC;YAAI,aAAU;;sBACf,WAAC;YAAI,WAAQ;;;AAGf;AARA,OAAO,MAAM,sBAAQ,mGAQlB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments_hoisted.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments_hoisted.snap index db59d6c164c..9d63fac7052 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments_hoisted.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments_hoisted.snap @@ -27,6 +27,7 @@ import { serverQrl } from "@qwik.dev/core"; import { _regSymbol } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; const Works_component_div_q_e_click_server_q39lOt7xGrI = /*#__PURE__*/ _regSymbol(()=>console.log('in server', 'hola'), "q39lOt7xGrI"); +const STYLES = '.class {}'; const Works_component_t45qL4vNGv0 = (props)=>{ useStyleQrl(/*#__PURE__*/ inlinedQrl(STYLES, "Works_component_useStyle_i40UL9JyQpg")); return /*#__PURE__*/ _jsxSorted("div", { @@ -34,11 +35,10 @@ const Works_component_t45qL4vNGv0 = (props)=>{ }, null, null, 2, "u6_0"); }; export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(Works_component_t45qL4vNGv0, "Works_component_t45qL4vNGv0")); -const STYLES = '.class {}'; export { STYLES as _auto_STYLES }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;kFAOyB,IAAM,QAAQ,GAAG,CAAC,aAF7B;oCAFkB,CAAC;IAChC,qCAAU;IAEV,qBACC,WAAC;QAAI,aAAU;;AAEjB;AANA,OAAO,MAAM,sBAAQ,mGAMlB;AAEH,MAAM,SAAS\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;kFAOyB,IAAM,QAAQ,GAAG,CAAC,aAF7B;AAMd,MAAM,SAAS;oCARiB,CAAC;IAChC,qCAAU;IAEV,qBACC,WAAC;QAAI,aAAU;;AAEjB;AANA,OAAO,MAAM,sBAAQ,mGAMlB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments_inlined.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments_inlined.snap index 1a6fa28f07d..32249bace35 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments_inlined.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments_inlined.snap @@ -21,14 +21,16 @@ import { serverQrl } from "@qwik.dev/core"; import { _regSymbol } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; -export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((props)=>{ +const Works_component_div_q_e_click_server_q39lOt7xGrI = /*#__PURE__*/ _regSymbol(()=>console.log('in server', 'hola'), "q39lOt7xGrI"); +const Works_component_t45qL4vNGv0 = (props)=>{ return /*#__PURE__*/ _jsxSorted("div", { - "q-e:click": serverQrl(/*#__PURE__*/ inlinedQrl(/*#__PURE__*/ _regSymbol(()=>console.log('in server', 'hola'), "q39lOt7xGrI"), "Works_component_div_q_e_click_server_q39lOt7xGrI")) + "q-e:click": serverQrl(/*#__PURE__*/ inlinedQrl(Works_component_div_q_e_click_server_q39lOt7xGrI, "Works_component_div_q_e_click_server_q39lOt7xGrI")) }, null, null, 2, "u6_0"); -}, "Works_component_t45qL4vNGv0")); +}; +export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(Works_component_t45qL4vNGv0, "Works_component_t45qL4vNGv0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAEA,OAAO,MAAM,sBAAQ,sCAAW,CAAC;IAEhC,qBACC,WAAC;QAAI,aAAU,4DAAQ,IAAM,QAAQ,GAAG,CAAC,aAF7B;;AAId,mCAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;kFAKyB,IAAM,QAAQ,GAAG,CAAC,aAF7B;oCADkB,CAAC;IAEhC,qBACC,WAAC;QAAI,aAAU;;AAEjB;AALA,OAAO,MAAM,sBAAQ,mGAKlB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_renamed_exports.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_renamed_exports.snap index 2b752509c5d..5d5b516cece 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_renamed_exports.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_renamed_exports.snap @@ -20,11 +20,11 @@ export const App = Component((props) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_NuXFTHRjvXE = ()=>import("./test.tsx_App_Component_NuXFTHRjvXE"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_NuXFTHRjvXE, "App_Component_NuXFTHRjvXE")); +const _qrl_App_Component_NuXFTHRjvXE = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_Component_NuXFTHRjvXE"), "App_Component_NuXFTHRjvXE"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_Component_NuXFTHRjvXE); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,4EAMhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CAMhB\"}") ============================= test.tsx_App_Component_1_A08tXHb9pEk.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_segment_variable_migration.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_segment_variable_migration.snap index 357218dcec2..5021c7a1fd2 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_segment_variable_migration.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_segment_variable_migration.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5772 +assertion_line: 5782 expression: output --- ==INPUT== @@ -62,20 +62,20 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_C1my3EIdP1k = ()=>import("./test.tsx_Other_component_C1my3EIdP1k"); -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +const _qrl_Other_component_C1my3EIdP1k = /*#__PURE__*/ qrl(()=>import("./test.tsx_Other_component_C1my3EIdP1k"), "Other_component_C1my3EIdP1k"); // This shared variable is used by multiple segments, so it should stay at root const SHARED_CONFIG = { value: 42 }; // This is an export, so it must stay at root export const publicHelper = ()=>console.log('public'); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); -export const Other = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_C1my3EIdP1k, "Other_component_C1my3EIdP1k")); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); +export const Other = /*#__PURE__*/ componentQrl(_qrl_Other_component_C1my3EIdP1k); export { SHARED_CONFIG as _auto_SHARED_CONFIG }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AASA,+EAA+E;AAC/E,MAAM,gBAAgB;IAAE,OAAO;AAAG;AAElC,6CAA6C;AAC7C,OAAO,MAAM,eAAe,IAAM,QAAQ,GAAG,CAAC,UAAU;AAExD,OAAO,MAAM,oBAAM,4EAGhB;AAEH,OAAO,MAAM,sBAAQ,8EAElB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AASA,+EAA+E;AAC/E,MAAM,gBAAgB;IAAE,OAAO;AAAG;AAElC,6CAA6C;AAC7C,OAAO,MAAM,eAAe,IAAM,QAAQ,GAAG,CAAC,UAAU;AAExD,OAAO,MAAM,oBAAM,6CAGhB;AAEH,OAAO,MAAM,sBAAQ,+CAElB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.tsx (ENTRY POINT)== import { _auto_SHARED_CONFIG as SHARED_CONFIG } from "./test"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_self_referential_component_migration.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_self_referential_component_migration.snap new file mode 100644 index 00000000000..6b2be8ca9af --- /dev/null +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_self_referential_component_migration.snap @@ -0,0 +1,255 @@ +--- +source: packages/qwik/src/optimizer/core/src/test.rs +assertion_line: 5900 +expression: output +--- +==INPUT== + + +import { component$ } from '@qwik.dev/core'; + +// Self-referential component: the Nested component references itself in its JSX +// This should be migrated to its segment using two-phase emission (let + assign) +// to avoid Temporal Dead Zone errors +export const Nested = component$(() => { + return ( +
+ +
+ ); +}); + +// Another self-referential component with conditional rendering +export const RecursiveList = component$((props) => { + if (props.depth === 0) return
End
; + return ( +
+ Level {props.depth} + +
+ ); +}); + +// Mutually recursive components: A references B, B references A +const ComponentA = component$(() => { + return ( +
+ A + +
+ ); +}); + +const ComponentB = component$(() => { + return ( +
+ B + +
+ ); +}); + +export const MutualExample = component$(() => { + return ; +}); + +============================= test.tsx_Nested_component_8cqIQQSPqhE.ts (ENTRY POINT)== + +import { Nested } from "./test"; +import { _jsxSorted } from "@qwik.dev/core"; +export const Nested_component_8cqIQQSPqhE = ()=>{ + return /*#__PURE__*/ _jsxSorted("div", null, null, /*#__PURE__*/ _jsxSorted(Nested, null, null, null, 3, "u6_0"), 1, "u6_1"); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;4CAMiC;IAChC,qBACC,WAAC,iCACA,WAAC;AAGJ\"}") +/* +{ + "origin": "test.tsx", + "name": "Nested_component_8cqIQQSPqhE", + "entry": null, + "displayName": "test.tsx_Nested_component", + "hash": "8cqIQQSPqhE", + "canonicalFilename": "test.tsx_Nested_component_8cqIQQSPqhE", + "path": "", + "extension": "ts", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 282, + 336 + ] +} +*/ +============================= test.tsx_RecursiveList_component_ignTe6QguYQ.ts (ENTRY POINT)== + +import { RecursiveList } from "./test"; +import { _fnSignal } from "@qwik.dev/core"; +import { _jsxSorted } from "@qwik.dev/core"; +import { _wrapProp } from "@qwik.dev/core"; +const _hf0 = (p0)=>p0.depth - 1; +const _hf0_str = "p0.depth-1"; +export const RecursiveList_component_ignTe6QguYQ = (props)=>{ + if (props.depth === 0) return /*#__PURE__*/ _jsxSorted("div", null, null, "End", 3, "u6_2"); + return /*#__PURE__*/ _jsxSorted("div", null, null, [ + "Level ", + _wrapProp(props, "depth"), + /*#__PURE__*/ _jsxSorted(RecursiveList, null, { + depth: _fnSignal(_hf0, [ + props + ], _hf0_str) + }, null, 3, "u6_3") + ], 1, "u6_4"); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;mBAoByB,GAAM,KAAK,GAAG;;mDALC,CAAC;IACxC,IAAI,MAAM,KAAK,KAAK,GAAG,qBAAO,WAAC,mBAAI;IACnC,qBACC,WAAC;QAAI;kBACG;sBACP,WAAC;YAAc,KAAK;;;;;AAGvB\"}") +/* +{ + "origin": "test.tsx", + "name": "RecursiveList_component_ignTe6QguYQ", + "entry": null, + "displayName": "test.tsx_RecursiveList_component", + "hash": "ignTe6QguYQ", + "canonicalFilename": "test.tsx_RecursiveList_component_ignTe6QguYQ", + "path": "", + "extension": "ts", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 445, + 605 + ], + "paramNames": [ + "props" + ] +} +*/ +============================= test.tsx_MutualExample_component_LXt10RL0k44.ts (ENTRY POINT)== + +import { _auto_ComponentA as ComponentA } from "./test"; +import { _jsxSorted } from "@qwik.dev/core"; +export const MutualExample_component_LXt10RL0k44 = ()=>{ + return /*#__PURE__*/ _jsxSorted(ComponentA, null, null, null, 3, "u6_9"); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;mDA4CwC;IACvC,qBAAO,WAAC;AACT\"}") +/* +{ + "origin": "test.tsx", + "name": "MutualExample_component_LXt10RL0k44", + "entry": null, + "displayName": "test.tsx_MutualExample_component", + "hash": "LXt10RL0k44", + "canonicalFilename": "test.tsx_MutualExample_component_LXt10RL0k44", + "path": "", + "extension": "ts", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 908, + 941 + ] +} +*/ +============================= test.tsx_ComponentB_component_WfCOFVxlmq4.ts (ENTRY POINT)== + +import { _auto_ComponentA as ComponentA } from "./test"; +import { _jsxSorted } from "@qwik.dev/core"; +export const ComponentB_component_WfCOFVxlmq4 = ()=>{ + return /*#__PURE__*/ _jsxSorted("div", null, null, [ + "B", + /*#__PURE__*/ _jsxSorted(ComponentA, null, null, null, 3, "u6_7") + ], 1, "u6_8"); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;gDAmC8B;IAC7B,qBACC,WAAC;QAAI;sBAEJ,WAAC;;AAGJ\"}") +/* +{ + "origin": "test.tsx", + "name": "ComponentB_component_WfCOFVxlmq4", + "entry": null, + "displayName": "test.tsx_ComponentB_component", + "hash": "WfCOFVxlmq4", + "canonicalFilename": "test.tsx_ComponentB_component_WfCOFVxlmq4", + "path": "", + "extension": "ts", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 801, + 864 + ] +} +*/ +============================= test.tsx_ComponentA_component_100sEyGkGuA.ts (ENTRY POINT)== + +import { _jsxSorted } from "@qwik.dev/core"; +import { componentQrl } from "@qwik.dev/core"; +import { qrl } from "@qwik.dev/core"; +const _qrl_ComponentB_component_WfCOFVxlmq4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_ComponentB_component_WfCOFVxlmq4"), "ComponentB_component_WfCOFVxlmq4"); +const ComponentB = /*#__PURE__*/ componentQrl(_qrl_ComponentB_component_WfCOFVxlmq4); +export const ComponentA_component_100sEyGkGuA = ()=>{ + return /*#__PURE__*/ _jsxSorted("div", null, null, [ + "A", + /*#__PURE__*/ _jsxSorted(ComponentB, null, null, null, 3, "u6_5") + ], 1, "u6_6"); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;MAmCM,2BAAa;gDATW;IAC7B,qBACC,WAAC;QAAI;sBAEJ,WAAC;;AAGJ\"}") +/* +{ + "origin": "test.tsx", + "name": "ComponentA_component_100sEyGkGuA", + "entry": null, + "displayName": "test.tsx_ComponentA_component", + "hash": "100sEyGkGuA", + "canonicalFilename": "test.tsx_ComponentA_component_100sEyGkGuA", + "path": "", + "extension": "ts", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 704, + 767 + ] +} +*/ +============================= test.ts == + +import { componentQrl } from "@qwik.dev/core"; +import { qrl } from "@qwik.dev/core"; +const _qrl_ComponentA_component_100sEyGkGuA = /*#__PURE__*/ qrl(()=>import("./test.tsx_ComponentA_component_100sEyGkGuA"), "ComponentA_component_100sEyGkGuA"); +const _qrl_ComponentB_component_WfCOFVxlmq4 = qrl(()=>import("./test.tsx_ComponentB_component_WfCOFVxlmq4"), "ComponentB_component_WfCOFVxlmq4"); +const _qrl_MutualExample_component_LXt10RL0k44 = /*#__PURE__*/ qrl(()=>import("./test.tsx_MutualExample_component_LXt10RL0k44"), "MutualExample_component_LXt10RL0k44"); +const _qrl_Nested_component_8cqIQQSPqhE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Nested_component_8cqIQQSPqhE"), "Nested_component_8cqIQQSPqhE"); +const _qrl_RecursiveList_component_ignTe6QguYQ = /*#__PURE__*/ qrl(()=>import("./test.tsx_RecursiveList_component_ignTe6QguYQ"), "RecursiveList_component_ignTe6QguYQ"); +// Self-referential component: the Nested component references itself in its JSX +// This should be migrated to its segment using two-phase emission (let + assign) +// to avoid Temporal Dead Zone errors +export const Nested = /*#__PURE__*/ componentQrl(_qrl_Nested_component_8cqIQQSPqhE); +// Another self-referential component with conditional rendering +export const RecursiveList = /*#__PURE__*/ componentQrl(_qrl_RecursiveList_component_ignTe6QguYQ); +// Mutually recursive components: A references B, B references A +const ComponentA = /*#__PURE__*/ componentQrl(_qrl_ComponentA_component_100sEyGkGuA); +export const MutualExample = /*#__PURE__*/ componentQrl(_qrl_MutualExample_component_LXt10RL0k44); +export { ComponentA as _auto_ComponentA }; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;AAGA,gFAAgF;AAChF,iFAAiF;AACjF,qCAAqC;AACrC,OAAO,MAAM,uBAAS,gDAMnB;AAEH,gEAAgE;AAChE,OAAO,MAAM,8BAAgB,uDAQ1B;AAEH,gEAAgE;AAChE,MAAM,2BAAa;AAkBnB,OAAO,MAAM,8BAAgB,uDAE1B\"}") +== DIAGNOSTICS == + +[] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_server_auth.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_server_auth.snap index a870e3f548b..5d30be3025d 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_server_auth.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_server_auth.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 1878 +assertion_line: 1879 expression: output -snapshot_kind: text --- ==INPUT== @@ -50,14 +49,12 @@ export const { onRequest, logout, getSession, signup } = auth$({ import { serverAuthQrl } from "@auth/qwik"; import { qrl } from "@qwik.dev/core"; -import { authQrl } from "@auth/qwik"; -const i_GU0aY5QCETY = ()=>import("./test.tsx_auth_GU0aY5QCETY"); -const i_qVqpX2a0p9Y = ()=>import("./test.tsx_serverAuth_qVqpX2a0p9Y"); -export const { onRequest, logout, getSession, signup } = serverAuthQrl(/*#__PURE__*/ qrl(i_qVqpX2a0p9Y, "serverAuth_qVqpX2a0p9Y")); -export const { onRequest, logout, getSession, signup } = authQrl(/*#__PURE__*/ qrl(i_GU0aY5QCETY, "auth_GU0aY5QCETY")); +/*#__PURE__*/ qrl(()=>import("./test.tsx_auth_GU0aY5QCETY"), "auth_GU0aY5QCETY"); +const _qrl_serverAuth_qVqpX2a0p9Y = /*#__PURE__*/ qrl(()=>import("./test.tsx_serverAuth_qVqpX2a0p9Y"), "serverAuth_qVqpX2a0p9Y"); +export const { onRequest, logout, getSession, signup } = serverAuthQrl(_qrl_serverAuth_qVqpX2a0p9Y); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAMA,OAAO,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,0EAetD;AAEH,OAAO,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,8DAetD\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAMA,OAAO,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,2CAetD\"}") ============================= test.tsx_auth_GU0aY5QCETY.js (ENTRY POINT)== import Facebook from "next-auth/providers/facebook"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_spread_jsx.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_spread_jsx.snap index 5bf1f3c0a82..a794547f3cf 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_spread_jsx.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_spread_jsx.snap @@ -42,13 +42,13 @@ export const RouterHead = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_DPA76mgIou0 = ()=>import("./test.tsx_RouterHead_component_DPA76mgIou0"); +const _qrl_RouterHead_component_DPA76mgIou0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_RouterHead_component_DPA76mgIou0"), "RouterHead_component_DPA76mgIou0"); /** * The RouterHead component is placed inside of the document `` element. - */ export const RouterHead = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_DPA76mgIou0, "RouterHead_component_DPA76mgIou0")); + */ export const RouterHead = /*#__PURE__*/ componentQrl(_qrl_RouterHead_component_DPA76mgIou0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA;;CAEC,GACD,OAAO,MAAM,2BAAa,mFAyBvB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA;;CAEC,GACD,OAAO,MAAM,2BAAa,oDAyBvB\"}") ============================= test.tsx_RouterHead_component_DPA76mgIou0.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_client_code.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_client_code.snap index 3914c562c71..f64e1aa758b 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_client_code.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_client_code.snap @@ -56,7 +56,15 @@ import { _wrapProp } from "@qwik.dev/core"; import { _captures } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { useStore } from '@qwik.dev/core'; -export const Parent = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(()=>{ +const Parent_component_div_Div_onClick_kgowuto5dR0 = ()=>console.log('keep'); +const Parent_component_div_Div_render_CkMybN6xzQk = ()=>{ + const state = _captures[0]; + return state.text; +}; +const Parent_component_useTask_ngmvcygWux8 = ()=>{ +// Code +}; +const Parent_component_t6Wy3C0Q0XM = ()=>{ const state = useStore({ text: '' }); @@ -64,9 +72,7 @@ export const Parent = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(()=>{ useClientMountQrl(/*#__PURE__*/ _noopQrl("Parent_component_useClientMount_Yn2kIDABoYw", [ state ])); - useTaskQrl(/*#__PURE__*/ inlinedQrl(()=>{ - // Code - }, "Parent_component_useTask_ngmvcygWux8")); + useTaskQrl(/*#__PURE__*/ inlinedQrl(Parent_component_useTask_ngmvcygWux8, "Parent_component_useTask_ngmvcygWux8")); return /*#__PURE__*/ _jsxSorted("div", null, { shouldRemove$: /*#__PURE__*/ _noopQrl("Parent_component_div_shouldRemove_EBj69wTX1do", [ state @@ -76,20 +82,18 @@ export const Parent = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(()=>{ ]) }, [ /*#__PURE__*/ _jsxSorted(Div, null, { - onClick$: /*#__PURE__*/ inlinedQrl(()=>console.log('keep'), "Parent_component_div_Div_onClick_kgowuto5dR0"), - render$: /*#__PURE__*/ inlinedQrl(()=>{ - const state = _captures[0]; - return state.text; - }, "Parent_component_div_Div_render_CkMybN6xzQk", [ + onClick$: /*#__PURE__*/ inlinedQrl(Parent_component_div_Div_onClick_kgowuto5dR0, "Parent_component_div_Div_onClick_kgowuto5dR0"), + render$: /*#__PURE__*/ inlinedQrl(Parent_component_div_Div_render_CkMybN6xzQk, "Parent_component_div_Div_render_CkMybN6xzQk", [ state ]) }, null, 3, "7R_0"), _wrapProp(state, "text") ], 1, "7R_1"); -}, "Parent_component_t6Wy3C0Q0XM")); +}; +export const Parent = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(Parent_component_t6Wy3C0Q0XM, "Parent_component_t6Wy3C0Q0XM")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/components/component.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;AACA,SAAsC,QAAQ,QAAkB,iBAAiB;AAQjF,OAAO,MAAM,uBAAS,sCAAW;IAChC,MAAM,QAAQ,SAAS;QACtB,MAAM;IACP;IAEA,qBAAqB;IACrB;;;IAKA,oCAAS;IACR,OAAO;IACR;IAEA,qBACC,WAAC;QACA,aAAa;;;QACb,WAAQ;;;;sBAER,WAAC;YACA,QAAQ,2BAAE,IAAM,QAAQ,GAAG,CAAC;YAC5B,OAAO,2BAAE;;uBAAM,MAAM,IAAI;;;;;kBAEzB;;AAGJ,oCAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/components/component.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;AACA,SAAsC,QAAQ,QAAkB,iBAAiB;qDA6BnE,IAAM,QAAQ,GAAG,CAAC;oDACnB;;WAAM,MAAM,IAAI;;6CAXnB;AACR,OAAO;AACR;qCAbgC;IAChC,MAAM,QAAQ,SAAS;QACtB,MAAM;IACP;IAEA,qBAAqB;IACrB;;;IAKA;IAIA,qBACC,WAAC;QACA,aAAa;;;QACb,WAAQ;;;;sBAER,WAAC;YACA,QAAQ;YACR,OAAO;;;;kBAEP;;AAGJ;AA3BA,OAAO,MAAM,uBAAS,qGA2BnB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_exports_unused.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_exports_unused.snap index e8d4c692529..740471851a1 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_exports_unused.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_exports_unused.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 1767 +assertion_line: 1768 expression: output -snapshot_kind: text --- ==INPUT== @@ -27,14 +26,14 @@ export default component$(()=> { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); export const onGet = ()=>{ throw "Symbol removed by Qwik Optimizer, it can not be called from current platform"; }; -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;aAIa;;;AASb,6BAAe,6EAEZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;aAIa;;;AASb,6BAAe,8CAEZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.tsx (ENTRY POINT)== export const test_component_LUXeXe0DQrg = ()=>{ diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_exports_used.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_exports_used.snap index 9368286f08f..3820281dadc 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_exports_used.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_exports_used.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 1793 +assertion_line: 1794 expression: output -snapshot_kind: text --- ==INPUT== @@ -59,21 +58,21 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); export const onGet = ()=>{ throw "Symbol removed by Qwik Optimizer, it can not be called from current platform"; }; -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;aAIa;;;AASb,6BAAe,6EAKZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;aAIa;;;AASb,6BAAe,8CAKZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.tsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; import { useResourceQrl } from "@qwik.dev/core"; -const i_4a8wVY7wh38 = ()=>import("./test.tsx_test_component_useResource_4a8wVY7wh38"); +const _qrl_test_component_useResource_4a8wVY7wh38 = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_useResource_4a8wVY7wh38"), "test_component_useResource_4a8wVY7wh38"); export const test_component_LUXeXe0DQrg = ()=>{ - useResourceQrl(/*#__PURE__*/ qrl(i_4a8wVY7wh38, "test_component_useResource_4a8wVY7wh38")); + useResourceQrl(_qrl_test_component_useResource_4a8wVY7wh38); return
cmp
; }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_server_code.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_server_code.snap index 266475b3ec2..d2bdb3438d8 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_server_code.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_server_code.snap @@ -88,11 +88,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_0TaiDayHrlo = ()=>import("./test.tsx_Parent_component_0TaiDayHrlo"); -export const Parent = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_0TaiDayHrlo, "s_0TaiDayHrlo")); +const _qrl_s_0TaiDayHrlo = /*#__PURE__*/ qrl(()=>import("./test.tsx_Parent_component_0TaiDayHrlo"), "s_0TaiDayHrlo"); +export const Parent = /*#__PURE__*/ componentQrl(_qrl_s_0TaiDayHrlo); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAOA,OAAO,MAAM,uBAAS,gEAkCnB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAOA,OAAO,MAAM,uBAAS,iCAkCnB\"}") ============================= test.tsx_Parent_component_serverStuff_a_2ca3HLDC7yc.js (ENTRY POINT)== export const s_2ca3HLDC7yc = ()=>{ @@ -159,9 +159,11 @@ import { serverLoaderQrl } from "@qwik.dev/core"; import { serverStuffQrl } from "@qwik.dev/core"; import { useStore } from "@qwik.dev/core"; import { useTaskQrl } from "@qwik.dev/core"; -const i_P8oRQhHsurk = ()=>import("./test.tsx_Parent_component_useTask_1_P8oRQhHsurk"); +const _qrl_qrl_4294901764 = /*#__PURE__*/ _noopQrl("s_r1qAHX7Opp0"); +const _qrl_qrl_4294901766 = /*#__PURE__*/ _noopQrl("s_k1L0DiPQV1I"); +const _qrl_s_P8oRQhHsurk = /*#__PURE__*/ qrl(()=>import("./test.tsx_Parent_component_useTask_1_P8oRQhHsurk"), "s_P8oRQhHsurk"); +const _qrl_s_zM9okM0TYrA = /*#__PURE__*/ qrl(()=>import("./test.tsx_Parent_component_div_q_e_click_zM9okM0TYrA"), "s_zM9okM0TYrA"); const i_gDH1EtUWqBU = ()=>import("./test.tsx_Parent_component_useTask_gDH1EtUWqBU"); -const i_zM9okM0TYrA = ()=>import("./test.tsx_Parent_component_div_q_e_click_zM9okM0TYrA"); export const s_0TaiDayHrlo = ()=>{ const state = useStore({ text: '' @@ -170,16 +172,16 @@ export const s_0TaiDayHrlo = ()=>{ useTaskQrl(/*#__PURE__*/ qrl(i_gDH1EtUWqBU, "s_gDH1EtUWqBU", [ state ])); - serverStuffQrl(/*#__PURE__*/ _noopQrl("s_r1qAHX7Opp0")); - serverLoaderQrl(/*#__PURE__*/ _noopQrl("s_k1L0DiPQV1I")); - useTaskQrl(/*#__PURE__*/ qrl(i_P8oRQhHsurk, "s_P8oRQhHsurk")); + serverStuffQrl(_qrl_qrl_4294901764); + serverLoaderQrl(_qrl_qrl_4294901766); + useTaskQrl(_qrl_s_P8oRQhHsurk); return /*#__PURE__*/ _jsxSorted("div", null, { - "q-e:click": /*#__PURE__*/ qrl(i_zM9okM0TYrA, "s_zM9okM0TYrA") + "q-e:click": _qrl_s_zM9okM0TYrA }, _wrapProp(state, "text"), 3, "u6_0"); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;;6BAOiC;IAChC,MAAM,QAAQ,SAAS;QACtB,MAAM;IACP;IAEA,qBAAqB;IACrB;;;IAMA;IAWA;IAEA;IAIA,qBACC,WAAC;QAAI,WAAQ;iBACX;AAGJ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;6BAOiC;IAChC,MAAM,QAAQ,SAAS;QACtB,MAAM;IACP;IAEA,qBAAqB;IACrB;;;IAMA;IAWA;IAEA;IAIA,qBACC,WAAC;QAAI,WAAQ;iBACX;AAGJ\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_transpile_jsx_only.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_transpile_jsx_only.snap index bf3c0377157..c800cee6979 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_transpile_jsx_only.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_transpile_jsx_only.snap @@ -20,11 +20,11 @@ export const App = component$((props) => { import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_Yl4ybrJWrt4 = ()=>import("./test.tsx_App_component_Cmp_p_q_e_click_Yl4ybrJWrt4.ts"); +const _qrl_App_component_Cmp_p_q_e_click_Yl4ybrJWrt4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_Cmp_p_q_e_click_Yl4ybrJWrt4.ts"), "App_component_Cmp_p_q_e_click_Yl4ybrJWrt4"); export const App_component_ckEPmXZlub0 = (props)=>{ return /*#__PURE__*/ _jsxSorted(Cmp, null, null, /*#__PURE__*/ _jsxSorted("p", null, { class: "stuff", - "q-e:click": /*#__PURE__*/ qrl(i_Yl4ybrJWrt4, "App_component_Cmp_p_q_e_click_Yl4ybrJWrt4") + "q-e:click": _qrl_App_component_Cmp_p_q_e_click_Yl4ybrJWrt4 }, "Hello Qwik", 3, null), 3, "u6_0"); }; @@ -83,11 +83,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0.ts"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0.ts"), "App_component_ckEPmXZlub0"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,4EAMhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CAMhB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_transpile_ts_only.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_transpile_ts_only.snap index 95c32d1a971..be9a96fa27c 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_transpile_ts_only.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_transpile_ts_only.snap @@ -20,14 +20,16 @@ export const App = component$((props: Stuff) => { import { componentQrl } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((props)=>{ +const App_component_Cmp_p_q_e_click_Yl4ybrJWrt4 = ()=>console.log('warn'); +const App_component_ckEPmXZlub0 = (props)=>{ return -

console.log('warn'), "App_component_Cmp_p_q_e_click_Yl4ybrJWrt4")}>Hello Qwik

+

Hello Qwik

; -}, "App_component_ckEPmXZlub0")); +}; +export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(App_component_ckEPmXZlub0, "App_component_ckEPmXZlub0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AAGA,OAAO,MAAM,oBAAM,sCAAW,CAAC;IAC9B,QACE,IAAI;GACJ,CAAC,EAAE,MAAM,QAAQ,oCAAU,IAAM,QAAQ,GAAG,CAAC,uDAAS,UAAU,EAAE,EAAE;EACrE,EAAE;AAEJ,iCAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;kDAM8B,IAAM,QAAQ,GAAG,CAAC;kCAHlB,CAAC;IAC9B,QACE,IAAI;GACJ,CAAC,EAAE,MAAM,QAAQ,6HAAqC,UAAU,EAAE,EAAE;EACrE,EAAE;AAEJ;AANA,OAAO,MAAM,oBAAM,+FAMhB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums.snap index 4570f14a58f..fe4ec5fc17e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2253 +assertion_line: 2254 expression: output -snapshot_kind: text --- ==INPUT== @@ -27,16 +26,16 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); export var Thing = /*#__PURE__*/ function(Thing) { Thing[Thing["A"] = 0] = "A"; Thing[Thing["B"] = 1] = "B"; return Thing; }({}); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,IAAA,AAAK,+BAAA;;;WAAA;MAGX;AAED,OAAO,MAAM,oBAAM,4EAOhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,IAAA,AAAK,+BAAA;;;WAAA;MAGX;AAED,OAAO,MAAM,oBAAM,6CAOhB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums_issue_1341.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums_issue_1341.snap index e610a8c871f..ca6b6a082fc 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums_issue_1341.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums_issue_1341.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2198 +assertion_line: 2199 expression: output -snapshot_kind: text --- ==INPUT== @@ -27,16 +26,16 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); /*#__PURE__*/ (function(Thing) { Thing[Thing["A"] = 0] = "A"; Thing[Thing["B"] = 1] = "B"; return Thing; })({}); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;wBAGK;;;WAAA;;AAKL,OAAO,MAAM,oBAAM,4EAOhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;wBAGK;;;WAAA;;AAKL,OAAO,MAAM,oBAAM,6CAOhB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums_no_transpile.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums_no_transpile.snap index ec1ae925590..56d1dc1ecc6 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums_no_transpile.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums_no_transpile.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2225 +assertion_line: 2226 expression: output -snapshot_kind: text --- ==INPUT== @@ -27,15 +26,15 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); export enum Thing { A, B } -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,YAAY;IACX;IACA;;AAGD,OAAO,MAAM,oBAAM,4EAOhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,YAAY;IACX;IACA;;AAGD,OAAO,MAAM,oBAAM,6CAOhB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.tsx (ENTRY POINT)== import { Thing } from "./test"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_use_client_effect.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_use_client_effect.snap index a78db0f0405..12623ceef49 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_use_client_effect.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_use_client_effect.snap @@ -73,11 +73,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_9GyF01GDKqw = ()=>import("./test.tsx_Child_component_9GyF01GDKqw"); -export const Child = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_9GyF01GDKqw, "Child_component_9GyF01GDKqw")); +const _qrl_Child_component_9GyF01GDKqw = /*#__PURE__*/ qrl(()=>import("./test.tsx_Child_component_9GyF01GDKqw"), "Child_component_9GyF01GDKqw"); +export const Child = /*#__PURE__*/ componentQrl(_qrl_Child_component_9GyF01GDKqw); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,sBAAQ,8EAoBlB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,sBAAQ,+CAoBlB\"}") ============================= test.tsx_Child_component_9GyF01GDKqw.js (ENTRY POINT)== import { _jsxSorted } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_use_optimization.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_use_optimization.snap index b7e7d5212dc..52caa151093 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_use_optimization.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_use_optimization.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 678 +assertion_line: 679 expression: output -snapshot_kind: text --- ==INPUT== @@ -26,17 +25,18 @@ export const Works = component$((props) => { import { componentQrl } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; -export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((props)=>{ +const Works_component_t45qL4vNGv0 = (props)=>{ const store = useStore({ value: { count: 0 } }); return
{foo}
; -}, "Works_component_t45qL4vNGv0")); +}; +export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(Works_component_t45qL4vNGv0, "Works_component_t45qL4vNGv0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AAGA,OAAO,MAAM,sBAAQ,sCAAW,CAAC;IAChC,MAAM,QAAgB,SAAS;QAAC,OAAM;YAAC,OAAM;QAAC;IAAC;IAO/C,QACE,IAAI,MAJS,AADH,MAHsC,MAA3C,YAEA,MACW,GAAG,CACF,OAAO,CAAnB,OAIa,MAAM;AAE3B,mCAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;oCAGgC,CAAC;IAChC,MAAM,QAAgB,SAAS;QAAC,OAAM;YAAC,OAAM;QAAC;IAAC;IAO/C,QACE,IAAI,MAJS,AADH,MAHsC,MAA3C,YAEA,MACW,GAAG,CACF,OAAO,CAAnB,OAIa,MAAM;AAE3B;AAXA,OAAO,MAAM,sBAAQ,mGAWlB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_use_server_mount.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_use_server_mount.snap index 58a7c8e06b0..682952f8de3 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_use_server_mount.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_use_server_mount.snap @@ -85,13 +85,13 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_0TaiDayHrlo = ()=>import("./test.tsx_Parent_component_0TaiDayHrlo"); -const i_9GyF01GDKqw = ()=>import("./test.tsx_Child_component_9GyF01GDKqw"); -export const Parent = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_0TaiDayHrlo, "Parent_component_0TaiDayHrlo")); -export const Child = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_9GyF01GDKqw, "Child_component_9GyF01GDKqw")); +const _qrl_Child_component_9GyF01GDKqw = /*#__PURE__*/ qrl(()=>import("./test.tsx_Child_component_9GyF01GDKqw"), "Child_component_9GyF01GDKqw"); +const _qrl_Parent_component_0TaiDayHrlo = /*#__PURE__*/ qrl(()=>import("./test.tsx_Parent_component_0TaiDayHrlo"), "Parent_component_0TaiDayHrlo"); +export const Parent = /*#__PURE__*/ componentQrl(_qrl_Parent_component_0TaiDayHrlo); +export const Child = /*#__PURE__*/ componentQrl(_qrl_Child_component_9GyF01GDKqw); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAKA,OAAO,MAAM,uBAAS,+EAgBnB;AAEH,OAAO,MAAM,sBAAQ,8EAelB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAKA,OAAO,MAAM,uBAAS,gDAgBnB;AAEH,OAAO,MAAM,sBAAQ,+CAelB\"}") ============================= test.tsx_Child_component_useTask_Oh4n7ZeqJkU.js == import { _captures } from "@qwik.dev/core"; @@ -133,8 +133,8 @@ import { _wrapProp } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useStore } from "@qwik.dev/core"; import { useTaskQrl } from "@qwik.dev/core"; +const _qrl_Parent_component_div_q_e_click_zM9okM0TYrA = /*#__PURE__*/ qrl(()=>import("./test.tsx_Parent_component_div_q_e_click_zM9okM0TYrA"), "Parent_component_div_q_e_click_zM9okM0TYrA"); const i_gDH1EtUWqBU = ()=>import("./test.tsx_Parent_component_useTask_gDH1EtUWqBU"); -const i_zM9okM0TYrA = ()=>import("./test.tsx_Parent_component_div_q_e_click_zM9okM0TYrA"); export const Parent_component_0TaiDayHrlo = ()=>{ const state = useStore({ text: '' @@ -144,7 +144,7 @@ export const Parent_component_0TaiDayHrlo = ()=>{ state ])); return /*#__PURE__*/ _jsxSorted("div", null, { - "q-e:click": /*#__PURE__*/ qrl(i_zM9okM0TYrA, "Parent_component_div_q_e_click_zM9okM0TYrA") + "q-e:click": _qrl_Parent_component_div_q_e_click_zM9okM0TYrA }, _wrapProp(state, "text"), 3, "u6_0"); }; @@ -203,8 +203,8 @@ import { _wrapProp } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useStore } from "@qwik.dev/core"; import { useTaskQrl } from "@qwik.dev/core"; +const _qrl_Child_component_div_q_e_click_cROa4sult1s = /*#__PURE__*/ qrl(()=>import("./test.tsx_Child_component_div_q_e_click_cROa4sult1s"), "Child_component_div_q_e_click_cROa4sult1s"); const i_Oh4n7ZeqJkU = ()=>import("./test.tsx_Child_component_useTask_Oh4n7ZeqJkU"); -const i_cROa4sult1s = ()=>import("./test.tsx_Child_component_div_q_e_click_cROa4sult1s"); export const Child_component_9GyF01GDKqw = ()=>{ const state = useStore({ text: '' @@ -214,7 +214,7 @@ export const Child_component_9GyF01GDKqw = ()=>{ state ])); return /*#__PURE__*/ _jsxSorted("div", null, { - "q-e:click": /*#__PURE__*/ qrl(i_cROa4sult1s, "Child_component_div_q_e_click_cROa4sult1s") + "q-e:click": _qrl_Child_component_div_q_e_click_cROa4sult1s }, _wrapProp(state, "text"), 3, "u6_1"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_with_style.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_with_style.snap index e0b2b88a69b..becb97de344 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_with_style.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_with_style.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 495 +assertion_line: 496 expression: output -snapshot_kind: text --- ==INPUT== @@ -48,9 +47,9 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { qrl } from "@qwik.dev/core"; import { useStylesQrl } from "@qwik.dev/core"; -const i_pV9TSCBIhw8 = ()=>import("./test.tsx_Foo_component_useStyles_pV9TSCBIhw8"); +const _qrl_Foo_component_useStyles_pV9TSCBIhw8 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_useStyles_pV9TSCBIhw8"), "Foo_component_useStyles_pV9TSCBIhw8"); export const Foo_component_HTDRsvUbLiE = ()=>{ - useStylesQrl(/*#__PURE__*/ qrl(i_pV9TSCBIhw8, "Foo_component_useStyles_pV9TSCBIhw8")); + useStylesQrl(_qrl_Foo_component_useStyles_pV9TSCBIhw8); return
; }; @@ -80,13 +79,13 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_HTDRsvUbLiE = ()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"); -export const Foo = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_HTDRsvUbLiE, "Foo_component_HTDRsvUbLiE"), { +const _qrl_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE"); +export const Foo = /*#__PURE__*/ componentQrl(_qrl_Foo_component_HTDRsvUbLiE, { tagName: "my-foo" }); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,4EAKhB;IACF,SAAS;AACV,GAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CAKhB;IACF,SAAS;AACV,GAAG\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_with_tagname.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_with_tagname.snap index e3119ea84ab..8830dbeec26 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_with_tagname.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_with_tagname.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 473 +assertion_line: 474 expression: output -snapshot_kind: text --- ==INPUT== @@ -23,9 +22,9 @@ export const Foo = component$(() => { ============================= test.tsx_Foo_component_HTDRsvUbLiE.tsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; -const i_DvU6FitWglY = ()=>import("./test.tsx_Foo_component_1_DvU6FitWglY"); +const _qrl_Foo_component_1_DvU6FitWglY = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_1_DvU6FitWglY"), "Foo_component_1_DvU6FitWglY"); export const Foo_component_HTDRsvUbLiE = ()=>{ - return /*#__PURE__*/ qrl(i_DvU6FitWglY, "Foo_component_1_DvU6FitWglY"); + return _qrl_Foo_component_1_DvU6FitWglY; }; @@ -83,13 +82,13 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_HTDRsvUbLiE = ()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"); -export const Foo = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_HTDRsvUbLiE, "Foo_component_HTDRsvUbLiE"), { +const _qrl_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE"); +export const Foo = /*#__PURE__*/ componentQrl(_qrl_Foo_component_HTDRsvUbLiE, { tagName: "my-foo" }); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,4EAOhB;IACF,SAAS;AACV,GAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CAOhB;IACF,SAAS;AACV,GAAG\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__hoisted_fn_signal_in_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__hoisted_fn_signal_in_loop.snap index c468a1e1bd3..8508c70811e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__hoisted_fn_signal_in_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__hoisted_fn_signal_in_loop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4670 +assertion_line: 4680 expression: output --- ==INPUT== @@ -35,11 +35,11 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,4EAqBhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CAqBhB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== import { _fnSignal } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__impure_template_fns.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__impure_template_fns.snap index 578be927113..e9a8be4bc98 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__impure_template_fns.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__impure_template_fns.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3918 +assertion_line: 3928 expression: output --- ==INPUT== @@ -114,11 +114,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAUE,6BAAe,6EAUZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAUE,6BAAe,8CAUZ\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__inlined_qrl_uses_identifier_reference_when_hoisted_snapshot.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__inlined_qrl_uses_identifier_reference_when_hoisted_snapshot.snap new file mode 100644 index 00000000000..a5818b3ba28 --- /dev/null +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__inlined_qrl_uses_identifier_reference_when_hoisted_snapshot.snap @@ -0,0 +1,29 @@ +--- +source: packages/qwik/src/optimizer/core/src/test.rs +assertion_line: 6073 +expression: output +--- +==INPUT== + + +import { component$ } from '@qwik.dev/core'; + +export const App = component$(() => { + return
Hello
; +}); + +============================= test.js == + +import { componentQrl } from "@qwik.dev/core"; +import { _jsxSorted } from "@qwik.dev/core"; +import { inlinedQrl } from "@qwik.dev/core"; +const App_component_ckEPmXZlub0 = ()=>{ + return /*#__PURE__*/ _jsxSorted("div", null, null, "Hello", 3, "u6_0"); +}; +export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(App_component_ckEPmXZlub0, "App_component_ckEPmXZlub0")); + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;kCAG8B;IAC7B,qBAAO,WAAC,mBAAI;AACb;AAFA,OAAO,MAAM,oBAAM,+FAEhB\"}") +== DIAGNOSTICS == + +[] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_150.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_150.snap index 497ae9ba033..bef96b59061 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_150.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_150.snap @@ -30,13 +30,12 @@ const d = $(()=>console.log('thing')); import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_n7HuG2hhU0Q = ()=>import("./test.tsx_Greeter_component_n7HuG2hhU0Q"); -const i_wKNFJEIQVUA = ()=>import("./test.tsx_d_wKNFJEIQVUA"); -export const Greeter = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_n7HuG2hhU0Q, "Greeter_component_n7HuG2hhU0Q")); -/*#__PURE__*/ qrl(i_wKNFJEIQVUA, "d_wKNFJEIQVUA"); +const _qrl_Greeter_component_n7HuG2hhU0Q = /*#__PURE__*/ qrl(()=>import("./test.tsx_Greeter_component_n7HuG2hhU0Q"), "Greeter_component_n7HuG2hhU0Q"); +export const Greeter = /*#__PURE__*/ componentQrl(_qrl_Greeter_component_n7HuG2hhU0Q); +/*#__PURE__*/ qrl(()=>import("./test.tsx_d_wKNFJEIQVUA"), "d_wKNFJEIQVUA"); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAIA,OAAO,MAAM,wBAAU,gFAapB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA,OAAO,MAAM,wBAAU,iDAapB\"}") ============================= test.tsx_d_wKNFJEIQVUA.js (ENTRY POINT)== export const d_wKNFJEIQVUA = ()=>console.log('thing'); diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_5008.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_5008.snap index 8cc520c9503..29381d8acc2 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_5008.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_5008.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3566 +assertion_line: 3576 expression: output --- ==INPUT== @@ -27,11 +27,11 @@ expression: output import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,6EAaZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,8CAaZ\"}") ============================= test.tsx_test_component_Fragment_button_q_e_click_7MTd2pAiliw.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_7216_add_test.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_7216_add_test.snap index d30c9a623de..84b3336a21f 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_7216_add_test.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_7216_add_test.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4276 +assertion_line: 4286 expression: output --- ==INPUT== @@ -23,11 +23,11 @@ export default component$((props) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,6BAAe,6EAUZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,6BAAe,8CAUZ\"}") ============================= test.tsx_test_component_p_q_e_hi_ttOKZbY46GA.js (ENTRY POINT)== export const test_component_p_q_e_hi_ttOKZbY46GA = ()=>'hi'; @@ -84,17 +84,17 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _jsxSplit } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_e6TYnIxnPLY = ()=>import("./test.tsx_test_component_p_q_e_const_e6TYnIxnPLY"); -const i_ttOKZbY46GA = ()=>import("./test.tsx_test_component_p_q_e_hi_ttOKZbY46GA"); +const _qrl_test_component_p_q_e_const_e6TYnIxnPLY = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_p_q_e_const_e6TYnIxnPLY"), "test_component_p_q_e_const_e6TYnIxnPLY"); +const _qrl_test_component_p_q_e_hi_ttOKZbY46GA = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_p_q_e_hi_ttOKZbY46GA"), "test_component_p_q_e_hi_ttOKZbY46GA"); export const test_component_LUXeXe0DQrg = (props)=>{ return /*#__PURE__*/ _jsxSplit("p", { - "q-e:hi": /*#__PURE__*/ qrl(i_ttOKZbY46GA, "test_component_p_q_e_hi_ttOKZbY46GA"), + "q-e:hi": _qrl_test_component_p_q_e_hi_ttOKZbY46GA, ...props.foo, "q-e:hello": props.helloHandler$, ...props.rest, "q-e:var": props.onVarHandler$ }, { - "q-e:const": /*#__PURE__*/ qrl(i_e6TYnIxnPLY, "test_component_p_q_e_const_e6TYnIxnPLY"), + "q-e:const": _qrl_test_component_p_q_e_const_e6TYnIxnPLY, asd: "1" }, null, 0, "u6_0"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_964.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_964.snap index 5a4cd2164aa..4c97bad7919 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_964.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_964.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2116 +assertion_line: 2117 expression: output -snapshot_kind: text --- ==INPUT== @@ -21,11 +20,11 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,4EAMhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CAMhB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== import { _jsxSorted } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__lib_mode_fn_signal.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__lib_mode_fn_signal.snap index 315807fe9b3..36fc6f2cd2e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__lib_mode_fn_signal.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__lib_mode_fn_signal.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3854 +assertion_line: 3864 expression: output --- ==INPUT== @@ -100,11 +100,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_zTmRHlL09Gg = ()=>import("./test.tsx_Counter_component_zTmRHlL09Gg"); -export const Counter = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_zTmRHlL09Gg, "Counter_component_zTmRHlL09Gg")); +const _qrl_Counter_component_zTmRHlL09Gg = /*#__PURE__*/ qrl(()=>import("./test.tsx_Counter_component_zTmRHlL09Gg"), "Counter_component_zTmRHlL09Gg"); +export const Counter = /*#__PURE__*/ componentQrl(_qrl_Counter_component_zTmRHlL09Gg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEE,OAAO,MAAM,wBAAU,gFAWpB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEE,OAAO,MAAM,wBAAU,iDAWpB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__recursive_component.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__recursive_component.snap new file mode 100644 index 00000000000..11500aa20d7 --- /dev/null +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__recursive_component.snap @@ -0,0 +1,389 @@ +--- +source: packages/qwik/src/optimizer/core/src/test.rs +assertion_line: 6123 +expression: output +--- +==INPUT== + + + import { jsx, jsxs, Fragment } from "@qwik.dev/core/jsx-runtime"; + import { component$, useSignal, $ } from "@qwik.dev/core"; + import { HiChevronUpMini } from "../../node_modules/.pnpm/@qwikest_icons@0.0.13_@builder.io_qwik@1.11.0_vite@7.1.3_@types_node@20.14.11_jiti@2.6._02d306fcbd9f637dd624291702bff9c0/node_modules/@qwikest/icons/lib/hi.qwik.qwik.mjs"; + const TreeNodeComponent = component$((props) => { + const isExpanded = useSignal(props.expandLevel <= props.level); + const hasChildren = props.node.children && props.node.children.length > 0; + const handleNodeClick = $(() => { + props.onNodeClick(props.node); + if (hasChildren) { + isExpanded.value = !isExpanded.value; + } + }); + const iterateProps = (porps) => { + const displayProp = [ + "q:id", + "q:key" + ]; + return displayProp.reduce((totalStr, prop) => { + if (porps[prop]) { + totalStr += `${prop}="${porps[prop]}" `; + } + return totalStr; + }, ""); + }; + const isActive = props.isHover ? props.node.id === props.activeNodeId : false; + const duration = props.animationDuration ?? 200; + const shouldShowChildren = hasChildren && !isExpanded.value; + const renderChildren = props.node.children?.map((child) => /* @__PURE__ */ jsx(TreeNodeComponent, { + isHover: props.isHover, + node: child, + gap: props.gap, + expandLevel: props.expandLevel, + level: props.level + 1, + activeNodeId: props.activeNodeId, + onNodeClick: props.onNodeClick, + renderNode: props.renderNode, + animate: props.animate, + animationDuration: props.animationDuration + }, child.id)); + return /* @__PURE__ */ jsxs("div", { + class: "w-full", + children: [ + /* @__PURE__ */ jsx("div", { + style: { + paddingLeft: `${props.level * props.gap}px` + }, + class: `flex w-full cursor-pointer items-center p-1 ${isActive ? "border border-emerald-300 bg-emerald-100 font-semibold text-emerald-700 dark:border-emerald-700/40 dark:bg-emerald-900/30 dark:text-emerald-300" : ""}`, + onClick$: handleNodeClick, + children: /* @__PURE__ */ jsxs("div", { + class: `inline-flex items-center rounded-md px-2 py-1`, + children: [ + hasChildren ? /* @__PURE__ */ jsx(HiChevronUpMini, { + class: `text-muted-foreground mr-2 h-4 w-4 flex-shrink-0 transition-transform duration-200 ${isExpanded.value ? "rotate-90" : "rotate-180"}` + }) : /* @__PURE__ */ jsx("div", { + class: "mr-2 w-4 flex-shrink-0" + }), + /* @__PURE__ */ jsx("div", { + class: "cursor-pointer whitespace-nowrap text-sm", + children: props.renderNode ? /* @__PURE__ */ jsx(Fragment, { + children: props.renderNode(props.node) + }) : /* @__PURE__ */ jsxs(Fragment, { + children: [ + /* @__PURE__ */ jsx("span", { + class: "text-foreground/70", + children: "<" + }), + /* @__PURE__ */ jsx("span", { + class: "text-violet-400 dark:text-violet-300", + children: props.node.label || props.node.name + }), + /* @__PURE__ */ jsxs("span", { + class: "text-muted-foreground", + children: [ + ` ${iterateProps(props.node.props || {})}`, + ">" + ] + }) + ] + }) + }) + ] + }) + }), + hasChildren ? props.animate ? /* @__PURE__ */ jsx("div", { + class: `overflow-hidden transition-all ease-in-out`, + style: { + maxHeight: shouldShowChildren ? "1000px" : "0px", + opacity: shouldShowChildren ? "1" : "0", + transition: `max-height ${duration}ms ease-in-out, opacity ${duration}ms ease-in-out` + }, + children: renderChildren + }) : shouldShowChildren && /* @__PURE__ */ jsx(Fragment, { + children: renderChildren + }) : null + ] + }); + }); + const Tree = component$((props) => { + const ref = useSignal(); + const store = props.data; + const activeNodeId = useSignal(""); + const setActiveNode = $((node) => { + ref.value.scrollLeft = ref.value.scrollWidth; + activeNodeId.value = node.id; + props.onNodeClick && props.onNodeClick(node); + }); + return /* @__PURE__ */ jsx("div", { + class: "h-full w-full overflow-x-auto overflow-y-auto", + ref, + children: store.value.map((rootNode) => /* @__PURE__ */ jsx(TreeNodeComponent, { + isHover: props.isHover === false ? false : true, + gap: props.gap || 20, + node: rootNode, + level: 0, + expandLevel: props.expandLevel ?? 2, + activeNodeId: activeNodeId.value, + onNodeClick: setActiveNode, + renderNode: props.renderNode, + animate: props.animate ?? true, + animationDuration: props.animationDuration + }, rootNode.id)) + }); + }); + export { + Tree + }; + +============================= test.js == + +import { componentQrl } from "@qwik.dev/core"; +import { _captures } from "@qwik.dev/core"; +import { inlinedQrlDEV } from "@qwik.dev/core"; +import { _wrapProp } from "@qwik.dev/core"; +import { _fnSignal } from "@qwik.dev/core"; +import { _jsxSorted } from "@qwik.dev/core"; +import { Fragment } from "@qwik.dev/core/jsx-runtime"; +import { useSignal } from "@qwik.dev/core"; +import { HiChevronUpMini } from "../../node_modules/.pnpm/@qwikest_icons@0.0.13_@builder.io_qwik@1.11.0_vite@7.1.3_@types_node@20.14.11_jiti@2.6._02d306fcbd9f637dd624291702bff9c0/node_modules/@qwikest/icons/lib/hi.qwik.qwik.mjs"; +const _hf0 = (p0)=>p0.level + 1; +const _hf0_str = "p0.level+1"; +const _hf1 = (p0)=>({ + paddingLeft: `${p0.level * p0.gap}px` + }); +const _hf1_str = "{paddingLeft:`${p0.level*p0.gap}px`}"; +const _hf2 = (p0)=>`text-muted-foreground mr-2 h-4 w-4 flex-shrink-0 transition-transform duration-200 ${p0.value ? "rotate-90" : "rotate-180"}`; +const _hf2_str = '`text-muted-foreground mr-2 h-4 w-4 flex-shrink-0 transition-transform duration-200 ${p0.value?"rotate-90":"rotate-180"}`'; +const _hf3 = (p0)=>p0.node.label || p0.node.name; +const _hf3_str = "p0.node.label||p0.node.name"; +const _hf4 = (p0)=>p0.isHover === false ? false : true; +const _hf4_str = "p0.isHover===false?false:true"; +const _hf5 = (p0)=>p0.gap || 20; +const _hf5_str = "p0.gap||20"; +const _hf6 = (p0)=>p0.expandLevel ?? 2; +const _hf6_str = "p0.expandLevel??2"; +const _hf7 = (p0)=>p0.animate ?? true; +const _hf7_str = "p0.animate??true"; +export { Tree }; +const _qrl_TreeNodeComponent_component_tWXOoBL5zFI = /*#__PURE__*/ inlinedQrlDEV((props)=>{ + const isExpanded = useSignal(props.expandLevel <= props.level); + const hasChildren = props.node.children && props.node.children.length > 0; + const handleNodeClick = /*#__PURE__*/ inlinedQrlDEV(()=>{ + const hasChildren = _captures[0], isExpanded = _captures[1], props = _captures[2]; + props.onNodeClick(props.node); + if (hasChildren) isExpanded.value = !isExpanded.value; + }, "TreeNodeComponent_component_handleNodeClick_iVNnBGkdzLg", { + file: "/user/qwik/src/test.tsx", + lo: 589, + hi: 708, + displayName: "test.tsx_TreeNodeComponent_component_handleNodeClick" + }, [ + hasChildren, + isExpanded, + props + ]); + const iterateProps = (porps)=>{ + const displayProp = [ + "q:id", + "q:key" + ]; + return displayProp.reduce((totalStr, prop)=>{ + if (porps[prop]) totalStr += `${prop}="${porps[prop]}" `; + return totalStr; + }, ""); + }; + const isActive = props.isHover ? props.node.id === props.activeNodeId : false; + const duration = props.animationDuration ?? 200; + const shouldShowChildren = hasChildren && !isExpanded.value; + const renderChildren = props.node.children?.map((child)=>/* @__PURE__ */ _jsxSorted(TreeNodeComponent, { + node: child + }, { + isHover: _wrapProp(props, "isHover"), + gap: _wrapProp(props, "gap"), + expandLevel: _wrapProp(props, "expandLevel"), + level: _fnSignal(_hf0, [ + props + ], _hf0_str), + activeNodeId: _wrapProp(props, "activeNodeId"), + onNodeClick: _wrapProp(props, "onNodeClick"), + renderNode: _wrapProp(props, "renderNode"), + animate: _wrapProp(props, "animate"), + animationDuration: _wrapProp(props, "animationDuration") + }, null, 3, child.id, { + fileName: "test.tsx", + lineNumber: 29, + columnNumber: 79 + })); + return /* @__PURE__ */ _jsxSorted("div", null, { + class: "w-full" + }, [ + /* @__PURE__ */ _jsxSorted("div", { + class: `flex w-full cursor-pointer items-center p-1 ${isActive ? "border border-emerald-300 bg-emerald-100 font-semibold text-emerald-700 dark:border-emerald-700/40 dark:bg-emerald-900/30 dark:text-emerald-300" : ""}`, + style: _fnSignal(_hf1, [ + props + ], _hf1_str) + }, { + "q-e:click": handleNodeClick + }, /* @__PURE__ */ _jsxSorted("div", null, { + class: `inline-flex items-center rounded-md px-2 py-1` + }, [ + hasChildren ? /* @__PURE__ */ _jsxSorted(HiChevronUpMini, null, { + class: _fnSignal(_hf2, [ + isExpanded + ], _hf2_str) + }, null, 3, "u6_0", { + fileName: "test.tsx", + lineNumber: 53, + columnNumber: 39 + }) : /* @__PURE__ */ _jsxSorted("div", null, { + class: "mr-2 w-4 flex-shrink-0" + }, null, 3, "u6_1", { + fileName: "test.tsx", + lineNumber: 55, + columnNumber: 30 + }), + /* @__PURE__ */ _jsxSorted("div", null, { + class: "cursor-pointer whitespace-nowrap text-sm" + }, props.renderNode ? /* @__PURE__ */ _jsxSorted(Fragment, null, null, props.renderNode(props.node), 1, "u6_2", { + fileName: "test.tsx", + lineNumber: 60, + columnNumber: 55 + }) : /* @__PURE__ */ _jsxSorted(Fragment, null, null, [ + /* @__PURE__ */ _jsxSorted("span", null, { + class: "text-foreground/70" + }, "<", 3, null, { + fileName: "test.tsx", + lineNumber: 64, + columnNumber: 28 + }), + /* @__PURE__ */ _jsxSorted("span", null, { + class: "text-violet-400 dark:text-violet-300" + }, _fnSignal(_hf3, [ + props + ], _hf3_str), 1, null, { + fileName: "test.tsx", + lineNumber: 68, + columnNumber: 28 + }), + /* @__PURE__ */ _jsxSorted("span", null, { + class: "text-muted-foreground" + }, [ + ` ${iterateProps(props.node.props || {})}`, + ">" + ], 1, null, { + fileName: "test.tsx", + lineNumber: 72, + columnNumber: 28 + }) + ], 1, "u6_3", { + fileName: "test.tsx", + lineNumber: 62, + columnNumber: 31 + }), 1, null, { + fileName: "test.tsx", + lineNumber: 58, + columnNumber: 25 + }) + ], 1, null, { + fileName: "test.tsx", + lineNumber: 50, + columnNumber: 33 + }), 1, null, { + fileName: "test.tsx", + lineNumber: 44, + columnNumber: 22 + }), + hasChildren ? props.animate ? /* @__PURE__ */ _jsxSorted("div", { + style: { + maxHeight: shouldShowChildren ? "1000px" : "0px", + opacity: shouldShowChildren ? "1" : "0", + transition: `max-height ${duration}ms ease-in-out, opacity ${duration}ms ease-in-out` + } + }, { + class: `overflow-hidden transition-all ease-in-out` + }, renderChildren, 1, "u6_4", { + fileName: "test.tsx", + lineNumber: 85, + columnNumber: 52 + }) : shouldShowChildren && /* @__PURE__ */ _jsxSorted(Fragment, null, null, renderChildren, 1, "u6_5", { + fileName: "test.tsx", + lineNumber: 93, + columnNumber: 49 + }) : null + ], 1, "u6_6", { + fileName: "test.tsx", + lineNumber: 41, + columnNumber: 27 + }); +}, "TreeNodeComponent_component_tWXOoBL5zFI", { + file: "/user/qwik/src/test.tsx", + lo: 402, + hi: 3844, + displayName: "test.tsx_TreeNodeComponent_component" +}); +const _qrl_Tree_component_T0k10EAlawU = /*#__PURE__*/ inlinedQrlDEV((props)=>{ + const ref = useSignal(); + const store = props.data; + const activeNodeId = useSignal(""); + const setActiveNode = /*#__PURE__*/ inlinedQrlDEV((node)=>{ + const activeNodeId = _captures[0], props = _captures[1], ref = _captures[2]; + ref.value.scrollLeft = ref.value.scrollWidth; + activeNodeId.value = node.id; + props.onNodeClick && props.onNodeClick(node); + }, "Tree_component_setActiveNode_wWe70kBn2Qo", { + file: "/user/qwik/src/test.tsx", + lo: 4009, + hi: 4159, + displayName: "test.tsx_Tree_component_setActiveNode" + }, [ + activeNodeId, + props, + ref + ]); + return /* @__PURE__ */ _jsxSorted("div", { + ref + }, { + class: "h-full w-full overflow-x-auto overflow-y-auto" + }, store.value.map((rootNode)=>/* @__PURE__ */ _jsxSorted(TreeNodeComponent, { + node: rootNode + }, { + isHover: _fnSignal(_hf4, [ + props + ], _hf4_str), + gap: _fnSignal(_hf5, [ + props + ], _hf5_str), + level: 0, + expandLevel: _fnSignal(_hf6, [ + props + ], _hf6_str), + activeNodeId: _wrapProp(activeNodeId), + onNodeClick: setActiveNode, + renderNode: _wrapProp(props, "renderNode"), + animate: _fnSignal(_hf7, [ + props + ], _hf7_str), + animationDuration: _wrapProp(props, "animationDuration") + }, null, 3, rootNode.id, { + fileName: "test.tsx", + lineNumber: 111, + columnNumber: 61 + })), 1, "u6_7", { + fileName: "test.tsx", + lineNumber: 108, + columnNumber: 27 + }); +}, "Tree_component_T0k10EAlawU", { + file: "/user/qwik/src/test.tsx", + lo: 3873, + hi: 4737, + displayName: "test.tsx_Tree_component" +}); +const TreeNodeComponent = /*#__PURE__*/ componentQrl(_qrl_TreeNodeComponent_component_tWXOoBL5zFI); +const Tree = /*#__PURE__*/ componentQrl(_qrl_Tree_component_T0k10EAlawU); +export { HiChevronUpMini as _auto_HiChevronUpMini }; +export { TreeNodeComponent as _auto_TreeNodeComponent }; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"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\"}") +== DIAGNOSTICS == + +[] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__relative_paths.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__relative_paths.snap index e6b1f2a5e4b..361a047dd0a 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__relative_paths.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__relative_paths.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3417 +assertion_line: 3427 expression: output --- ============================= ../../node_modules/dep/dist/lib.mjs_App_component_div_p_button_onClick_8dWUa0cJAr4.js (ENTRY POINT)== @@ -41,6 +41,7 @@ Some("{\"version\":3,\"sources\":[\"node_modules/dep/dist/lib.mjs\"],\"sourceRoo import { _jsxSorted } from "@qwik.dev/core"; import { _wrapProp } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +import { useStore } from "@qwik.dev/core"; const useData = ()=>{ return useStore({ count: 0 @@ -63,7 +64,7 @@ export const App_component_AkbU84a8zes = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"node_modules/dep/dist/lib.mjs\"],\"sourceRoot\":\"/path/to/app/\",\"names\":[],\"mappings\":\";;;MAKM,UAAU;IACf,OAAO,SAAS;QACf,OAAO;IACR;AACD;;yCAEyD;IACxD,MAAM,QAAQ;IACd,OAAO,WAAW,GAAG,WAAK,mBACf;QACT,WAAW,GAAG,WAAK,iBACR;YACT;sBACA;SACA;QAEF,WAAW,GAAG,WAAI,iBACP,WAAW,GAAG,WAAI;YAC3B,WAAQ;;;iBAME;KAGZ;AAEH\"}") +Some("{\"version\":3,\"sources\":[\"node_modules/dep/dist/lib.mjs\"],\"sourceRoot\":\"/path/to/app/\",\"names\":[],\"mappings\":\";;;;MAKM,UAAU;IACf,OAAO,SAAS;QACf,OAAO;IACR;AACD;;yCAEyD;IACxD,MAAM,QAAQ;IACd,OAAO,WAAW,GAAG,WAAK,mBACf;QACT,WAAW,GAAG,WAAK,iBACR;YACT;sBACA;SACA;QAEF,WAAW,GAAG,WAAI,iBACP,WAAW,GAAG,WAAI;YAC3B,WAAQ;;;iBAME;KAGZ;AAEH\"}") /* { "origin": "../../node_modules/dep/dist/lib.mjs", @@ -87,12 +88,11 @@ Some("{\"version\":3,\"sources\":[\"node_modules/dep/dist/lib.mjs\"],\"sourceRoo ============================= ../../node_modules/dep/dist/lib.mjs == import { qrl } from "@qwik.dev/core"; -const i_AkbU84a8zes = ()=>import("./lib.mjs_App_component_AkbU84a8zes.js"); import { componentQrl, useStore } from "@qwik.dev/core"; -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_AkbU84a8zes, "App_component_AkbU84a8zes")); +export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(()=>import("./lib.mjs_App_component_AkbU84a8zes.js"), "App_component_AkbU84a8zes")); -Some("{\"version\":3,\"sources\":[\"node_modules/dep/dist/lib.mjs\"],\"sourceRoot\":\"/path/to/app/\",\"names\":[],\"mappings\":\";;AACA,SAAS,YAAY,EAAc,QAAQ,QAAyB,iBAAiB;AAUrF,OAAO,MAAM,MAAM,WAAW,GAAG,4EAuBA\"}") +Some("{\"version\":3,\"sources\":[\"node_modules/dep/dist/lib.mjs\"],\"sourceRoot\":\"/path/to/app/\",\"names\":[],\"mappings\":\";AACA,SAAS,YAAY,EAAc,QAAQ,QAAyB,iBAAiB;AAUrF,OAAO,MAAM,MAAM,WAAW,GAAG,mHAuBA\"}") ============================= components/main.tsx_Local_component_jJ0v28bs0p8.js (ENTRY POINT)== import { _jsxSorted } from "@qwik.dev/core"; @@ -127,11 +127,11 @@ Some("{\"version\":3,\"sources\":[\"src/thing/components/main.tsx\"],\"sourceRoo import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_jJ0v28bs0p8 = ()=>import("./main.tsx_Local_component_jJ0v28bs0p8.js"); -export const Local = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_jJ0v28bs0p8, "Local_component_jJ0v28bs0p8")); +const _qrl_Local_component_jJ0v28bs0p8 = /*#__PURE__*/ qrl(()=>import("./main.tsx_Local_component_jJ0v28bs0p8.js"), "Local_component_jJ0v28bs0p8"); +export const Local = /*#__PURE__*/ componentQrl(_qrl_Local_component_jJ0v28bs0p8); -Some("{\"version\":3,\"sources\":[\"src/thing/components/main.tsx\"],\"sourceRoot\":\"/path/to/app/\",\"names\":[],\"mappings\":\";;;AAIA,OAAO,MAAM,sBAAQ,8EAIlB\"}") +Some("{\"version\":3,\"sources\":[\"src/thing/components/main.tsx\"],\"sourceRoot\":\"/path/to/app/\",\"names\":[],\"mappings\":\";;;AAIA,OAAO,MAAM,sBAAQ,+CAIlB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__rename_builder_io.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__rename_builder_io.snap index 907f40a9d73..3e40acfdcb4 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__rename_builder_io.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__rename_builder_io.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3948 +assertion_line: 3959 expression: output -snapshot_kind: text --- ==INPUT== @@ -120,15 +119,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { qwikifyQrl } from "@qwik.dev/react"; import { qrl } from "@qwik.dev/core"; import { componentQrl } from "@qwik.dev/core"; -const i_0Yoy9qA0SC0 = ()=>import("./test.tsx_Foo_qwikify_0Yoy9qA0SC0"); -const i_GXXnVUtURSw = ()=>import("./test.tsx_Bar_GXXnVUtURSw"); -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); -export const Foo = qwikifyQrl(/*#__PURE__*/ qrl(i_0Yoy9qA0SC0, "Foo_qwikify_0Yoy9qA0SC0")); -export const Bar = /*#__PURE__*/ qrl(i_GXXnVUtURSw, "Bar_GXXnVUtURSw"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +const _qrl_Foo_qwikify_0Yoy9qA0SC0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_qwikify_0Yoy9qA0SC0"), "Foo_qwikify_0Yoy9qA0SC0"); +export const Foo = qwikifyQrl(_qrl_Foo_qwikify_0Yoy9qA0SC0); +export const Bar = /*#__PURE__*/ qrl(()=>import("./test.tsx_Bar_GXXnVUtURSw"), "Bar_GXXnVUtURSw"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;AAQE,OAAO,MAAM,MAAM,wEAA2B;AAE9C,OAAO,MAAM,0DAAmB;AAEhC,OAAO,MAAM,oBAAM,4EAQhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAQE,OAAO,MAAM,MAAM,yCAA2B;AAE9C,OAAO,MAAM,qFAAmB;AAEhC,OAAO,MAAM,oBAAM,6CAQhB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__root_level_self_referential_qrl.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__root_level_self_referential_qrl.snap new file mode 100644 index 00000000000..96ae6068228 --- /dev/null +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__root_level_self_referential_qrl.snap @@ -0,0 +1,72 @@ +--- +source: packages/qwik/src/optimizer/core/src/test.rs +assertion_line: 5815 +expression: output +--- +==INPUT== + + +import { component$ } from '@qwik.dev/core'; + +// Root-level self-referential component +// The QRL should NOT be hoisted before the component function is defined +// or should use two-phase emission to avoid forward reference +export const Tree = component$((props) => { + return ( +
+ {props.label} + {props.children && props.children.map((child) => )} +
+ ); +}); + +============================= test.tsx_Tree_component_T0k10EAlawU.tsx (ENTRY POINT)== + +import { Tree } from "./test"; +export const Tree_component_T0k10EAlawU = (props)=>{ + return
+ {props.label} + {props.children && props.children.map((child)=>)} +
; +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";0CAM+B,CAAC;IAC/B,QACE,IAAI;GACJ,CAAC,MAAM,KAAK,CAAC;GACb,CAAC,MAAM,QAAQ,IAAI,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAW,MAAM,GAAG,KAAK,KAAM;EACvE,EAAE;AAEJ\"}") +/* +{ + "origin": "test.tsx", + "name": "Tree_component_T0k10EAlawU", + "entry": null, + "displayName": "test.tsx_Tree_component", + "hash": "T0k10EAlawU", + "canonicalFilename": "test.tsx_Tree_component_T0k10EAlawU", + "path": "", + "extension": "tsx", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 257, + 393 + ], + "paramNames": [ + "props" + ] +} +*/ +============================= test.tsx == + +import { componentQrl } from "@qwik.dev/core"; +import { qrl } from "@qwik.dev/core"; +const _qrl_Tree_component_T0k10EAlawU = /*#__PURE__*/ qrl(()=>import("./test.tsx_Tree_component_T0k10EAlawU"), "Tree_component_T0k10EAlawU"); +// Root-level self-referential component +// The QRL should NOT be hoisted before the component function is defined +// or should use two-phase emission to avoid forward reference +export const Tree = /*#__PURE__*/ componentQrl(_qrl_Tree_component_T0k10EAlawU); + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,wCAAwC;AACxC,yEAAyE;AACzE,8DAA8D;AAC9D,OAAO,MAAM,qBAAO,8CAOjB\"}") +== DIAGNOSTICS == + +[] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__root_level_self_referential_qrl_inline.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__root_level_self_referential_qrl_inline.snap new file mode 100644 index 00000000000..185d8e41b99 --- /dev/null +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__root_level_self_referential_qrl_inline.snap @@ -0,0 +1,62 @@ +--- +source: packages/qwik/src/optimizer/core/src/test.rs +assertion_line: 5838 +expression: output +--- +==INPUT== + + +import { component$ } from '@qwik.dev/core'; + +// Root-level self-referential component +// The QRL should NOT be hoisted before the component function is defined +// or should use two-phase emission to avoid forward reference +export const Tree = component$((props) => { + return ( +
+ {props.label} + {props.children && props.children.map((child) => )} +
+ ); +}); + +============================= ./node_modules/qwik-tree/index.qwik.js == + +import { componentQrl } from "@qwik.dev/core"; +import { _wrapProp } from "@qwik.dev/core"; +import { _getVarProps } from "@qwik.dev/core"; +import { _getConstProps } from "@qwik.dev/core"; +import { _jsxSplit } from "@qwik.dev/core"; +import { _jsxSorted } from "@qwik.dev/core"; +import { inlinedQrlDEV } from "@qwik.dev/core"; +const Tree_component_XMEiO6Rrd3Y = (props)=>{ + return /*#__PURE__*/ _jsxSorted("div", null, null, [ + _wrapProp(props, "label"), + props.children && props.children.map((child)=>/*#__PURE__*/ _jsxSplit(Tree, { + ..._getVarProps(child) + }, _getConstProps(child), null, 0, "zi_0", { + fileName: "./node_modules/qwik-tree/index.qwik.jsx", + lineNumber: 11, + columnNumber: 53 + })) + ], 1, "zi_1", { + fileName: "./node_modules/qwik-tree/index.qwik.jsx", + lineNumber: 9, + columnNumber: 3 + }); +}; +// Root-level self-referential component +// The QRL should NOT be hoisted before the component function is defined +// or should use two-phase emission to avoid forward reference +export const Tree = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrlDEV(Tree_component_XMEiO6Rrd3Y, "Tree_component_XMEiO6Rrd3Y", { + file: "/user/qwik/src/node_modules/qwik-tree/index.qwik.jsx", + lo: 257, + hi: 393, + displayName: "index.qwik.jsx_Tree_component" +})); + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/node_modules/qwik-tree/index.qwik.jsx\"],\"names\":[],\"mappings\":\";;;;;;;mCAM+B,CAAC;IAC/B,qBACC,WAAC;kBACC;QACA,MAAM,QAAQ,IAAI,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,sBAAU,UAAC;gCAAS;8BAAA;;;;;;;;;;AAG9D;AAVA,wCAAwC;AACxC,yEAAyE;AACzE,8DAA8D;AAC9D,OAAO,MAAM,qBAAO;;;;;IAOjB\"}") +== DIAGNOSTICS == + +[] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_jsx_events.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_jsx_events.snap index 344376a11fd..c22eaac4e76 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_jsx_events.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_jsx_events.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4706 +assertion_line: 4716 expression: output --- ==INPUT== @@ -34,8 +34,8 @@ expression: output import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ndbrzxiyG3g = ()=>import("./test.tsx_ManyEventsComponent_component_ndbrzxiyG3g"); -/*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ndbrzxiyG3g, "ManyEventsComponent_component_ndbrzxiyG3g")); +const _qrl_ManyEventsComponent_component_ndbrzxiyG3g = /*#__PURE__*/ qrl(()=>import("./test.tsx_ManyEventsComponent_component_ndbrzxiyG3g"), "ManyEventsComponent_component_ndbrzxiyG3g"); +/*#__PURE__*/ componentQrl(_qrl_ManyEventsComponent_component_ndbrzxiyG3g); Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;cAG8B\"}") @@ -121,25 +121,25 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_BOulU3QpiyA = ()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA"); -const i_DjpgJ0bcgJs = ()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs"); -const i_LVmlrV6TsTY = ()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY"); -const i_VZGqMEVFles = ()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles"); -const i_ZC5Gt2v0qH0 = ()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0"); -const i_fR03UCeyKSs = ()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs"); -const i_z0X12CPQocg = ()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg"); +const _qrl_ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs = /*#__PURE__*/ qrl(()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs"), "ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs"); +const _qrl_ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0"), "ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0"); +const _qrl_ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY = /*#__PURE__*/ qrl(()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY"), "ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY"); +const _qrl_ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA = /*#__PURE__*/ qrl(()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA"), "ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA"); +const _qrl_ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg = /*#__PURE__*/ qrl(()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg"), "ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg"); +const _qrl_ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles = /*#__PURE__*/ qrl(()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles"), "ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles"); +const _qrl_ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs = /*#__PURE__*/ qrl(()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs"), "ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs"); export const ManyEventsComponent_component_ndbrzxiyG3g = ()=>{ return /*#__PURE__*/ _jsxSorted("div", null, null, [ /*#__PURE__*/ _jsxSorted("button", null, { - "q-e:click": /*#__PURE__*/ qrl(i_z0X12CPQocg, "ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg"), - "q-e:dblclick": /*#__PURE__*/ qrl(i_VZGqMEVFles, "ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles") + "q-e:click": _qrl_ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg, + "q-e:dblclick": _qrl_ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles }, "click", 3, null), /*#__PURE__*/ _jsxSorted("button", null, { - "q-e:click": /*#__PURE__*/ qrl(i_BOulU3QpiyA, "ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA"), - "q-e:blur": /*#__PURE__*/ qrl(i_LVmlrV6TsTY, "ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY"), - "q-e:another-custom": /*#__PURE__*/ qrl(i_ZC5Gt2v0qH0, "ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0"), - "q-d:focus": /*#__PURE__*/ qrl(i_fR03UCeyKSs, "ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs"), - "q-w:click": /*#__PURE__*/ qrl(i_DjpgJ0bcgJs, "ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs") + "q-e:click": _qrl_ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA, + "q-e:blur": _qrl_ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY, + "q-e:another-custom": _qrl_ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0, + "q-d:focus": _qrl_ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs, + "q-w:click": _qrl_ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs }, "click", 3, null) ], 3, "u6_0"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_rest_props.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_rest_props.snap index 7124de2e24e..49dfa1720bc 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_rest_props.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_rest_props.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4579 +assertion_line: 4589 expression: output --- ==INPUT== @@ -20,11 +20,11 @@ expression: output import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,6EAMb\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,8CAMb\"}") ============================= test.tsx_test_component_useTask_jewzFYh3XmQ.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_destructure_args.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_destructure_args.snap index b4708283199..7981794cbb6 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_destructure_args.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_destructure_args.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3621 +assertion_line: 3632 expression: output -snapshot_kind: text --- ==INPUT== @@ -30,13 +29,13 @@ snapshot_kind: text import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); // the count results in _fnSignal because of the rename // would be nice to consider it a prop too -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,uDAAuD;AACvD,0CAA0C;AAC1C,6BAAe,6EAab\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,uDAAuD;AACvD,0CAA0C;AAC1C,6BAAe,8CAab\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { _getConstProps } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index.snap index a4520bbc308..433bfdb7dcf 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5004 +assertion_line: 5014 expression: output --- ==INPUT== @@ -23,11 +23,11 @@ export default component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,6EASZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,8CASZ\"}") ============================= test.tsx_test_component_div_div_q_e_hover_2iHUE4xtgo8.js (ENTRY POINT)== export const test_component_div_div_q_e_hover_2iHUE4xtgo8 = (_, _1, _2, index)=>console.log(index); @@ -95,19 +95,17 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_2iHUE4xtgo8 = ()=>import("./test.tsx_test_component_div_div_q_e_hover_2iHUE4xtgo8"); -const i_Mc600uqO6ps = ()=>import("./test.tsx_test_component_div_div_q_e_click_Mc600uqO6ps"); +const _qrl_test_component_div_div_q_e_click_Mc600uqO6ps = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_div_div_q_e_click_Mc600uqO6ps"), "test_component_div_div_q_e_click_Mc600uqO6ps"); +const _qrl_test_component_div_div_q_e_hover_2iHUE4xtgo8 = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_div_div_q_e_hover_2iHUE4xtgo8"), "test_component_div_div_q_e_hover_2iHUE4xtgo8"); export const test_component_LUXeXe0DQrg = ()=>{ const loop = [ 'abcd', 'xyz' ]; - const test_component_div_div_q_e_click_Mc600uqO6ps = /*#__PURE__*/ qrl(i_Mc600uqO6ps, "test_component_div_div_q_e_click_Mc600uqO6ps"); - const test_component_div_div_q_e_hover_2iHUE4xtgo8 = /*#__PURE__*/ qrl(i_2iHUE4xtgo8, "test_component_div_div_q_e_hover_2iHUE4xtgo8"); return /*#__PURE__*/ _jsxSorted("div", null, null, loop.map((item, index)=>{ return /*#__PURE__*/ _jsxSorted("div", { - "q-e:click": test_component_div_div_q_e_click_Mc600uqO6ps, - "q-e:hover": test_component_div_div_q_e_hover_2iHUE4xtgo8, + "q-e:click": _qrl_test_component_div_div_q_e_click_Mc600uqO6ps, + "q-e:hover": _qrl_test_component_div_div_q_e_hover_2iHUE4xtgo8, "q:ps": [ item, index @@ -117,7 +115,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;0CAG0B;IACxB,MAAM,OAAiB;QAAC;QAAQ;KAAM;;;IACtC,qBACE,WAAC,mBACE,KAAK,GAAG,CAAC,CAAC,MAAM;QACf,qBAAO,WAAC;YAAI,WAAQ;YAA2B,WAAQ;;gBAD9C;gBAAM;;iBACqE;IACtF;AAGN\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;0CAG0B;IACxB,MAAM,OAAiB;QAAC;QAAQ;KAAM;IACtC,qBACE,WAAC,mBACE,KAAK,GAAG,CAAC,CAAC,MAAM;QACf,qBAAO,WAAC;YAAI,WAAQ;YAA2B,WAAQ;;gBAD9C;gBAAM;;iBACqE;IACtF;AAGN\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index_and_capture_ref.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index_and_capture_ref.snap index 0ca5f8348f6..d1261c30548 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index_and_capture_ref.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index_and_capture_ref.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5028 +assertion_line: 5038 expression: output --- ==INPUT== @@ -26,11 +26,11 @@ export default component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,6EAWZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,8CAWZ\"}") ============================= test.tsx_test_component_div_div_q_e_hover_2iHUE4xtgo8.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl.snap index 2b834c36a28..a938f4bc728 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4849 +assertion_line: 4859 expression: output --- ==INPUT== @@ -55,11 +55,11 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,OAAO,MAAM,oBAAM,4EA0CZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,OAAO,MAAM,oBAAM,6CA0CZ\"}") ============================= test.tsx_App_component_div_tr_td_a_q_e_click_1_40fnSAlYI48.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_2.snap index 13fe0b6e7ef..ef3bc9a6629 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_2.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4905 +assertion_line: 4915 expression: output --- ==INPUT== @@ -76,8 +76,8 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_0TaiDayHrlo = ()=>import("./test.tsx_Parent_component_0TaiDayHrlo"); -/*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_0TaiDayHrlo, "Parent_component_0TaiDayHrlo")); +const _qrl_Parent_component_0TaiDayHrlo = /*#__PURE__*/ qrl(()=>import("./test.tsx_Parent_component_0TaiDayHrlo"), "Parent_component_0TaiDayHrlo"); +/*#__PURE__*/ componentQrl(_qrl_Parent_component_0TaiDayHrlo); Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;cAEqB\"}") diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_index.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_index.snap index e2af7105881..54889c4c1c4 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_index.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_index.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4946 +assertion_line: 4956 expression: output --- ==INPUT== @@ -57,11 +57,11 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_ckEPmXZlub0 = ()=>import("./test.tsx_App_component_ckEPmXZlub0"); -export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_ckEPmXZlub0, "App_component_ckEPmXZlub0")); +const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,OAAO,MAAM,oBAAM,4EA4CZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,OAAO,MAAM,oBAAM,6CA4CZ\"}") ============================= test.tsx_App_component_div_tr_td_a_q_e_click_1_40fnSAlYI48.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_nested_components.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_nested_components.snap index ba5da9000e4..1fcc1b83472 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_nested_components.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_nested_components.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5028 +assertion_line: 5065 expression: output --- ==INPUT== @@ -20,8 +20,8 @@ const Foo = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_HTDRsvUbLiE = ()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"); -/*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_HTDRsvUbLiE, "Foo_component_HTDRsvUbLiE")); +const _qrl_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE"); +/*#__PURE__*/ componentQrl(_qrl_Foo_component_HTDRsvUbLiE); Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;cAEY\"}") @@ -31,10 +31,10 @@ import { _jsxSorted } from "@qwik.dev/core"; import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; -const i_AuJ9mTBx5YA = ()=>import("./test.tsx_Foo_component_Inner_component_AuJ9mTBx5YA"); +const _qrl_Foo_component_Inner_component_AuJ9mTBx5YA = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_Inner_component_AuJ9mTBx5YA"), "Foo_component_Inner_component_AuJ9mTBx5YA"); export const Foo_component_HTDRsvUbLiE = ()=>{ const data = useSignal([]); - const Inner = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_AuJ9mTBx5YA, "Foo_component_Inner_component_AuJ9mTBx5YA")); + const Inner = /*#__PURE__*/ componentQrl(_qrl_Foo_component_Inner_component_AuJ9mTBx5YA); return /*#__PURE__*/ _jsxSorted(Inner, null, { data: data }, null, 3, "u6_2"); @@ -69,12 +69,11 @@ import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; const _hf0 = (p0)=>p0.value.id; const _hf0_str = "p0.value.id"; -const i_7oFgEhSmgvY = ()=>import("./test.tsx_Foo_component_Inner_component_div_p_q_e_click_7oFgEhSmgvY"); +const _qrl_Foo_component_Inner_component_div_p_q_e_click_7oFgEhSmgvY = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_Inner_component_div_p_q_e_click_7oFgEhSmgvY"), "Foo_component_Inner_component_div_p_q_e_click_7oFgEhSmgvY"); export const Foo_component_Inner_component_AuJ9mTBx5YA = (props)=>{ const data = props.data; - const Foo_component_Inner_component_div_p_q_e_click_7oFgEhSmgvY = /*#__PURE__*/ qrl(i_7oFgEhSmgvY, "Foo_component_Inner_component_div_p_q_e_click_7oFgEhSmgvY"); return /*#__PURE__*/ _jsxSorted("div", null, null, data.value.map((item)=>/*#__PURE__*/ _jsxSorted("p", { - "q-e:click": Foo_component_Inner_component_div_p_q_e_click_7oFgEhSmgvY, + "q-e:click": _qrl_Foo_component_Inner_component_div_p_q_e_click_7oFgEhSmgvY, "q:p": item }, null, _fnSignal(_hf0, [ item @@ -82,7 +81,7 @@ export const Foo_component_Inner_component_AuJ9mTBx5YA = (props)=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;mBAMwF,GAAK,KAAK,CAAC,EAAE;;;yDAF1E,CAAC;IACxB,MAAM,OAAO,MAAM,IAAI;;IACvB,qBAAO,WAAC,mBAAK,KAAK,KAAK,CAAC,GAAG,CAAC,CAAA,qBAAQ,WAAC;YAAE,WAAQ;mBAAnB;;;;AAC9B\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;mBAMwF,GAAK,KAAK,CAAC,EAAE;;;yDAF1E,CAAC;IACxB,MAAM,OAAO,MAAM,IAAI;IACvB,qBAAO,WAAC,mBAAK,KAAK,KAAK,CAAC,GAAG,CAAC,CAAA,qBAAQ,WAAC;YAAE,WAAQ;mBAAnB;;;;AAC9B\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_handle_dangerously_set_inner_html.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_handle_dangerously_set_inner_html.snap index de146adbfe8..a44ab85e519 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_handle_dangerously_set_inner_html.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_handle_dangerously_set_inner_html.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3781 +assertion_line: 3791 expression: output --- ==INPUT== @@ -33,8 +33,8 @@ expression: output import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_4ryKJTOKjWE = ()=>import("./test.tsx_Cmp_component_4ryKJTOKjWE"); -/*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_4ryKJTOKjWE, "Cmp_component_4ryKJTOKjWE")); +const _qrl_Cmp_component_4ryKJTOKjWE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Cmp_component_4ryKJTOKjWE"), "Cmp_component_4ryKJTOKjWE"); +/*#__PURE__*/ componentQrl(_qrl_Cmp_component_4ryKJTOKjWE); Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;cAEc\"}") diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_make_component_jsx_split_with_bind.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_make_component_jsx_split_with_bind.snap index 68932fe25bb..a8f2677beaf 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_make_component_jsx_split_with_bind.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_make_component_jsx_split_with_bind.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5388 +assertion_line: 5398 expression: output --- ==INPUT== @@ -22,11 +22,11 @@ export default component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,6EAQZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,8CAQZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { _jsxSorted } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_mark_props_as_var_props_for_inner_cmp.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_mark_props_as_var_props_for_inner_cmp.snap index 133573fad52..303dbf54a08 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_mark_props_as_var_props_for_inner_cmp.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_mark_props_as_var_props_for_inner_cmp.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4199 +assertion_line: 4209 expression: output --- ==INPUT== @@ -46,13 +46,13 @@ export const ModelImg = component$((props) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_CS20HgBlRYI = ()=>import("./test.tsx_Image_component_CS20HgBlRYI"); -const i_iJe6ICWVnyA = ()=>import("./test.tsx_ModelImg_component_iJe6ICWVnyA"); -export const Image = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_CS20HgBlRYI, "Image_component_CS20HgBlRYI")); -export const ModelImg = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_iJe6ICWVnyA, "ModelImg_component_iJe6ICWVnyA")); +const _qrl_Image_component_CS20HgBlRYI = /*#__PURE__*/ qrl(()=>import("./test.tsx_Image_component_CS20HgBlRYI"), "Image_component_CS20HgBlRYI"); +const _qrl_ModelImg_component_iJe6ICWVnyA = /*#__PURE__*/ qrl(()=>import("./test.tsx_ModelImg_component_iJe6ICWVnyA"), "ModelImg_component_iJe6ICWVnyA"); +export const Image = /*#__PURE__*/ componentQrl(_qrl_Image_component_CS20HgBlRYI); +export const ModelImg = /*#__PURE__*/ componentQrl(_qrl_ModelImg_component_iJe6ICWVnyA); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAKA,OAAO,MAAM,sBAAQ,8EAMlB;AAEH,OAAO,MAAM,yBAAW,iFAsBrB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAKA,OAAO,MAAM,sBAAQ,+CAMlB;AAEH,OAAO,MAAM,yBAAW,kDAsBrB\"}") ============================= test.tsx_ModelImg_component_iJe6ICWVnyA.js (ENTRY POINT)== import { Image } from "./test"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_attributes_with_spread_props.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_attributes_with_spread_props.snap index 3a89397c211..fa509f86c02 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_attributes_with_spread_props.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_attributes_with_spread_props.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4600 +assertion_line: 4610 expression: output --- ==INPUT== @@ -16,11 +16,11 @@ expression: output import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,6EAEZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,8CAEZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { _fnSignal } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_attributes_with_spread_props_before_and_after.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_attributes_with_spread_props_before_and_after.snap index aac4bb78784..52feee77504 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_attributes_with_spread_props_before_and_after.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_attributes_with_spread_props_before_and_after.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4617 +assertion_line: 4627 expression: output --- ==INPUT== @@ -16,11 +16,11 @@ expression: output import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,6EAEZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,8CAEZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { _fnSignal } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_bind_checked_and_on_input.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_bind_checked_and_on_input.snap index bc25c6ffafb..f0b1190a07e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_bind_checked_and_on_input.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_bind_checked_and_on_input.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4823 +assertion_line: 4833 expression: output --- ==INPUT== @@ -25,11 +25,11 @@ export const FieldInput = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_V4XAtJSTRKg = ()=>import("./test.tsx_FieldInput_component_V4XAtJSTRKg"); -export const FieldInput = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_V4XAtJSTRKg, "FieldInput_component_V4XAtJSTRKg")); +const _qrl_FieldInput_component_V4XAtJSTRKg = /*#__PURE__*/ qrl(()=>import("./test.tsx_FieldInput_component_V4XAtJSTRKg"), "FieldInput_component_V4XAtJSTRKg"); +export const FieldInput = /*#__PURE__*/ componentQrl(_qrl_FieldInput_component_V4XAtJSTRKg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,2BAAa,mFAWvB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,2BAAa,oDAWvB\"}") ============================= test.tsx_FieldInput_component_V4XAtJSTRKg.js (ENTRY POINT)== import { _chk } from "@qwik.dev/core"; @@ -37,13 +37,13 @@ import { _jsxSorted } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; -const i_wqR1xEjZjf4 = ()=>import("./test.tsx_FieldInput_component_input_q_e_input_wqR1xEjZjf4"); +const _qrl_FieldInput_component_input_q_e_input_wqR1xEjZjf4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_FieldInput_component_input_q_e_input_wqR1xEjZjf4"), "FieldInput_component_input_q_e_input_wqR1xEjZjf4"); export const FieldInput_component_V4XAtJSTRKg = ()=>{ const localValue = useSignal(false); return /*#__PURE__*/ _jsxSorted("input", null, { "checked": localValue, "q-e:input": [ - /*#__PURE__*/ qrl(i_wqR1xEjZjf4, "FieldInput_component_input_q_e_input_wqR1xEjZjf4"), + _qrl_FieldInput_component_input_q_e_input_wqR1xEjZjf4, inlinedQrl(_chk, "_chk", [ localValue ]) diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_bind_value_and_on_input.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_bind_value_and_on_input.snap index a01007ccf65..75ecb19a8fe 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_bind_value_and_on_input.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_bind_value_and_on_input.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4797 +assertion_line: 4807 expression: output --- ==INPUT== @@ -25,11 +25,11 @@ export const FieldInput = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_V4XAtJSTRKg = ()=>import("./test.tsx_FieldInput_component_V4XAtJSTRKg"); -export const FieldInput = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_V4XAtJSTRKg, "FieldInput_component_V4XAtJSTRKg")); +const _qrl_FieldInput_component_V4XAtJSTRKg = /*#__PURE__*/ qrl(()=>import("./test.tsx_FieldInput_component_V4XAtJSTRKg"), "FieldInput_component_V4XAtJSTRKg"); +export const FieldInput = /*#__PURE__*/ componentQrl(_qrl_FieldInput_component_V4XAtJSTRKg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,2BAAa,mFAWvB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,2BAAa,oDAWvB\"}") ============================= test.tsx_FieldInput_component_V4XAtJSTRKg.js (ENTRY POINT)== import { _jsxSorted } from "@qwik.dev/core"; @@ -37,13 +37,13 @@ import { _val } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; -const i_wqR1xEjZjf4 = ()=>import("./test.tsx_FieldInput_component_input_q_e_input_wqR1xEjZjf4"); +const _qrl_FieldInput_component_input_q_e_input_wqR1xEjZjf4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_FieldInput_component_input_q_e_input_wqR1xEjZjf4"), "FieldInput_component_input_q_e_input_wqR1xEjZjf4"); export const FieldInput_component_V4XAtJSTRKg = ()=>{ const localValue = useSignal(""); return /*#__PURE__*/ _jsxSorted("input", null, { "value": localValue, "q-e:input": [ - /*#__PURE__*/ qrl(i_wqR1xEjZjf4, "FieldInput_component_input_q_e_input_wqR1xEjZjf4"), + _qrl_FieldInput_component_input_q_e_input_wqR1xEjZjf4, inlinedQrl(_val, "_val", [ localValue ]) diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_on_input_and_bind_checked.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_on_input_and_bind_checked.snap index b197924c85c..e8e9285aba0 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_on_input_and_bind_checked.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_on_input_and_bind_checked.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5144 +assertion_line: 5205 expression: output --- ==INPUT== @@ -25,11 +25,11 @@ export const FieldInput = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_V4XAtJSTRKg = ()=>import("./test.tsx_FieldInput_component_V4XAtJSTRKg"); -export const FieldInput = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_V4XAtJSTRKg, "FieldInput_component_V4XAtJSTRKg")); +const _qrl_FieldInput_component_V4XAtJSTRKg = /*#__PURE__*/ qrl(()=>import("./test.tsx_FieldInput_component_V4XAtJSTRKg"), "FieldInput_component_V4XAtJSTRKg"); +export const FieldInput = /*#__PURE__*/ componentQrl(_qrl_FieldInput_component_V4XAtJSTRKg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,2BAAa,mFAWvB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,2BAAa,oDAWvB\"}") ============================= test.tsx_FieldInput_component_V4XAtJSTRKg.js (ENTRY POINT)== import { _chk } from "@qwik.dev/core"; @@ -37,7 +37,7 @@ import { _jsxSorted } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; -const i_wqR1xEjZjf4 = ()=>import("./test.tsx_FieldInput_component_input_q_e_input_wqR1xEjZjf4"); +const _qrl_FieldInput_component_input_q_e_input_wqR1xEjZjf4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_FieldInput_component_input_q_e_input_wqR1xEjZjf4"), "FieldInput_component_input_q_e_input_wqR1xEjZjf4"); export const FieldInput_component_V4XAtJSTRKg = ()=>{ const localValue = useSignal(false); return /*#__PURE__*/ _jsxSorted("input", null, { @@ -46,7 +46,7 @@ export const FieldInput_component_V4XAtJSTRKg = ()=>{ inlinedQrl(_chk, "_chk", [ localValue ]), - /*#__PURE__*/ qrl(i_wqR1xEjZjf4, "FieldInput_component_input_q_e_input_wqR1xEjZjf4") + _qrl_FieldInput_component_input_q_e_input_wqR1xEjZjf4 ] }, null, 3, "u6_0"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_on_input_and_bind_value.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_on_input_and_bind_value.snap index 0f24413b232..b4fc0956204 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_on_input_and_bind_value.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_on_input_and_bind_value.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5118 +assertion_line: 5179 expression: output --- ==INPUT== @@ -25,11 +25,11 @@ export const FieldInput = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_V4XAtJSTRKg = ()=>import("./test.tsx_FieldInput_component_V4XAtJSTRKg"); -export const FieldInput = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_V4XAtJSTRKg, "FieldInput_component_V4XAtJSTRKg")); +const _qrl_FieldInput_component_V4XAtJSTRKg = /*#__PURE__*/ qrl(()=>import("./test.tsx_FieldInput_component_V4XAtJSTRKg"), "FieldInput_component_V4XAtJSTRKg"); +export const FieldInput = /*#__PURE__*/ componentQrl(_qrl_FieldInput_component_V4XAtJSTRKg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,2BAAa,mFAWvB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,2BAAa,oDAWvB\"}") ============================= test.tsx_FieldInput_component_V4XAtJSTRKg.js (ENTRY POINT)== import { _jsxSorted } from "@qwik.dev/core"; @@ -37,7 +37,7 @@ import { _val } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; -const i_wqR1xEjZjf4 = ()=>import("./test.tsx_FieldInput_component_input_q_e_input_wqR1xEjZjf4"); +const _qrl_FieldInput_component_input_q_e_input_wqR1xEjZjf4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_FieldInput_component_input_q_e_input_wqR1xEjZjf4"), "FieldInput_component_input_q_e_input_wqR1xEjZjf4"); export const FieldInput_component_V4XAtJSTRKg = ()=>{ const localValue = useSignal(""); return /*#__PURE__*/ _jsxSorted("input", null, { @@ -46,7 +46,7 @@ export const FieldInput_component_V4XAtJSTRKg = ()=>{ inlinedQrl(_val, "_val", [ localValue ]), - /*#__PURE__*/ qrl(i_wqR1xEjZjf4, "FieldInput_component_input_q_e_input_wqR1xEjZjf4") + _qrl_FieldInput_component_input_q_e_input_wqR1xEjZjf4 ] }, null, 3, "u6_0"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_move_bind_value_to_var_props.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_move_bind_value_to_var_props.snap index 417c1c2e86d..4ffcc597410 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_move_bind_value_to_var_props.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_move_bind_value_to_var_props.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5268 +assertion_line: 5329 expression: output --- ==INPUT== @@ -30,11 +30,11 @@ export const FieldInput = component$( import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_V4XAtJSTRKg = ()=>import("./test.tsx_FieldInput_component_V4XAtJSTRKg"); -export const FieldInput = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_V4XAtJSTRKg, "FieldInput_component_V4XAtJSTRKg")); +const _qrl_FieldInput_component_V4XAtJSTRKg = /*#__PURE__*/ qrl(()=>import("./test.tsx_FieldInput_component_V4XAtJSTRKg"), "FieldInput_component_V4XAtJSTRKg"); +export const FieldInput = /*#__PURE__*/ componentQrl(_qrl_FieldInput_component_V4XAtJSTRKg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA,OAAO,MAAM,2BAAa,mFAexB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA,OAAO,MAAM,2BAAa,oDAexB\"}") ============================= test.tsx_FieldInput_component_V4XAtJSTRKg.js (ENTRY POINT)== import { _getConstProps } from "@qwik.dev/core"; @@ -42,7 +42,7 @@ import { _getVarProps } from "@qwik.dev/core"; import { _jsxSplit } from "@qwik.dev/core"; import { destructureBindings } from "./destructure-bindings"; import { qrl } from "@qwik.dev/core"; -const i_fZgZHYZXt60 = ()=>import("./test.tsx_FieldInput_component_input_q_e_click_fZgZHYZXt60"); +const _qrl_FieldInput_component_input_q_e_click_fZgZHYZXt60 = /*#__PURE__*/ qrl(()=>import("./test.tsx_FieldInput_component_input_q_e_click_fZgZHYZXt60"), "FieldInput_component_input_q_e_click_fZgZHYZXt60"); export const FieldInput_component_V4XAtJSTRKg = (props)=>{ const initialValues = { value: undefined @@ -53,7 +53,7 @@ export const FieldInput_component_V4XAtJSTRKg = (props)=>{ ..._getConstProps(rest), "bind:value": finalValue }, { - "q-e:click": /*#__PURE__*/ qrl(i_fZgZHYZXt60, "FieldInput_component_input_q_e_click_fZgZHYZXt60") + "q-e:click": _qrl_FieldInput_component_input_q_e_click_fZgZHYZXt60 }, null, 0, "u6_0"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_move_props_related_to_iteration_variables_to_var_props.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_move_props_related_to_iteration_variables_to_var_props.snap index f81cac15840..cff8999c7a1 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_move_props_related_to_iteration_variables_to_var_props.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_move_props_related_to_iteration_variables_to_var_props.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5204 +assertion_line: 5360 expression: output --- ==INPUT== @@ -37,11 +37,11 @@ export const Child = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_9GyF01GDKqw = ()=>import("./test.tsx_Child_component_9GyF01GDKqw"); -export const Child = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_9GyF01GDKqw, "Child_component_9GyF01GDKqw")); +const _qrl_Child_component_9GyF01GDKqw = /*#__PURE__*/ qrl(()=>import("./test.tsx_Child_component_9GyF01GDKqw"), "Child_component_9GyF01GDKqw"); +export const Child = /*#__PURE__*/ componentQrl(_qrl_Child_component_9GyF01GDKqw); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA,OAAO,MAAM,sBAAQ,8EAsBnB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA,OAAO,MAAM,sBAAQ,+CAsBnB\"}") ============================= test.tsx_Child_component_9GyF01GDKqw.js (ENTRY POINT)== import { TestComponent } from "./testComponent"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_generate_conflicting_props_identifiers.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_generate_conflicting_props_identifiers.snap index d583a5dbf65..2fb61d1d2b4 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_generate_conflicting_props_identifiers.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_generate_conflicting_props_identifiers.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4553 +assertion_line: 4563 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_bind_checked_in_var_props_for_jsx_split.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_bind_checked_in_var_props_for_jsx_split.snap index da6a45dd7f0..0f192a273b4 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_bind_checked_in_var_props_for_jsx_split.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_bind_checked_in_var_props_for_jsx_split.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5236 +assertion_line: 5297 expression: output --- ==INPUT== @@ -31,11 +31,11 @@ export const FieldInput = component$((props) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_V4XAtJSTRKg = ()=>import("./test.tsx_FieldInput_component_V4XAtJSTRKg"); -export const FieldInput = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_V4XAtJSTRKg, "FieldInput_component_V4XAtJSTRKg")); +const _qrl_FieldInput_component_V4XAtJSTRKg = /*#__PURE__*/ qrl(()=>import("./test.tsx_FieldInput_component_V4XAtJSTRKg"), "FieldInput_component_V4XAtJSTRKg"); +export const FieldInput = /*#__PURE__*/ componentQrl(_qrl_FieldInput_component_V4XAtJSTRKg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,2BAAa,mFAiBvB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,2BAAa,oDAiBvB\"}") ============================= test.tsx_FieldInput_component_V4XAtJSTRKg.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_bind_value_in_var_props_for_jsx_split.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_bind_value_in_var_props_for_jsx_split.snap index 704a92c4551..d00249128de 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_bind_value_in_var_props_for_jsx_split.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_bind_value_in_var_props_for_jsx_split.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5204 +assertion_line: 5265 expression: output --- ==INPUT== @@ -31,11 +31,11 @@ export const FieldInput = component$((props) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_V4XAtJSTRKg = ()=>import("./test.tsx_FieldInput_component_V4XAtJSTRKg"); -export const FieldInput = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_V4XAtJSTRKg, "FieldInput_component_V4XAtJSTRKg")); +const _qrl_FieldInput_component_V4XAtJSTRKg = /*#__PURE__*/ qrl(()=>import("./test.tsx_FieldInput_component_V4XAtJSTRKg"), "FieldInput_component_V4XAtJSTRKg"); +export const FieldInput = /*#__PURE__*/ componentQrl(_qrl_FieldInput_component_V4XAtJSTRKg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,2BAAa,mFAiBvB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,2BAAa,oDAiBvB\"}") ============================= test.tsx_FieldInput_component_V4XAtJSTRKg.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_events_on_non_elements.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_events_on_non_elements.snap index ecfb8bb1bb6..4a3aa9ac232 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_events_on_non_elements.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_events_on_non_elements.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4770 +assertion_line: 4780 expression: output --- ==INPUT== @@ -52,11 +52,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_n7HuG2hhU0Q = ()=>import("./test.tsx_Greeter_component_n7HuG2hhU0Q"); -export const Greeter = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_n7HuG2hhU0Q, "Greeter_component_n7HuG2hhU0Q")); +const _qrl_Greeter_component_n7HuG2hhU0Q = /*#__PURE__*/ qrl(()=>import("./test.tsx_Greeter_component_n7HuG2hhU0Q"), "Greeter_component_n7HuG2hhU0Q"); +export const Greeter = /*#__PURE__*/ componentQrl(_qrl_Greeter_component_n7HuG2hhU0Q); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAKA,OAAO,MAAM,wBAAU,gFASpB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAKA,OAAO,MAAM,wBAAU,iDASpB\"}") ============================= test.tsx_Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w.tsx (ENTRY POINT)== export const Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w = ()=>{}; @@ -88,17 +88,17 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { AnotherComponent } from "./another-component"; import { CustomComponent } from "./custom-component"; import { qrl } from "@qwik.dev/core"; -const i_6xTF8kMcS9w = ()=>import("./test.tsx_Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w"); -const i_9BwXJW3s0yA = ()=>import("./test.tsx_Greeter_component_div_AnotherComponent_onClick_9BwXJW3s0yA"); +const _qrl_Greeter_component_div_AnotherComponent_onClick_9BwXJW3s0yA = /*#__PURE__*/ qrl(()=>import("./test.tsx_Greeter_component_div_AnotherComponent_onClick_9BwXJW3s0yA"), "Greeter_component_div_AnotherComponent_onClick_9BwXJW3s0yA"); +const _qrl_Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w = /*#__PURE__*/ qrl(()=>import("./test.tsx_Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w"), "Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w"); export const Greeter_component_n7HuG2hhU0Q = ()=>{ return
- - {array.map((item)=>)} + + {array.map((item)=>)}
; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;6CAKkC;IACjC,QACE,IAAI;GACJ,CAAC,gBAAgB,0GAAqB;GACtC,CAAC,MAAM,GAAG,CAAC,CAAA,QACT,iBAAiB,6GAChB;EACJ,EAAE;AAEJ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;6CAKkC;IACjC,QACE,IAAI;GACJ,CAAC,gBAAgB,2EAAqB;GACtC,CAAC,MAAM,GAAG,CAAC,CAAA,QACT,iBAAiB,8EAChB;EACJ,EAAE;AAEJ\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_fn.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_fn.snap index 0fc195a2e9d..0a914af6227 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_fn.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_fn.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4246 +assertion_line: 4256 expression: output --- ==INPUT== @@ -29,11 +29,11 @@ export const Cmp = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_4ryKJTOKjWE = ()=>import("./test.tsx_Cmp_component_4ryKJTOKjWE"); -export const Cmp = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_4ryKJTOKjWE, "Cmp_component_4ryKJTOKjWE")); +const _qrl_Cmp_component_4ryKJTOKjWE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Cmp_component_4ryKJTOKjWE"), "Cmp_component_4ryKJTOKjWE"); +export const Cmp = /*#__PURE__*/ componentQrl(_qrl_Cmp_component_4ryKJTOKjWE); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA,OAAO,MAAM,oBAAM,4EAchB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA,OAAO,MAAM,oBAAM,6CAchB\"}") ============================= test.tsx_Cmp_component_4ryKJTOKjWE.js (ENTRY POINT)== import { A } from "./componentA"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_ternary_function_operator_with_fn.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_ternary_function_operator_with_fn.snap index 663388dc0e0..3432e1a549f 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_ternary_function_operator_with_fn.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_ternary_function_operator_with_fn.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4405 +assertion_line: 4416 expression: output -snapshot_kind: text --- ==INPUT== @@ -29,11 +28,11 @@ snapshot_kind: text import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIE,6BAAe,6EAaZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIE,6BAAe,8CAaZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { _jsxSorted } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_var_template_string.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_var_template_string.snap index 0d31d37aa63..944b6c3dda6 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_var_template_string.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_var_template_string.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4332 +assertion_line: 4343 expression: output -snapshot_kind: text --- ==INPUT== @@ -28,11 +27,11 @@ snapshot_kind: text import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIE,6BAAe,6EAYZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIE,6BAAe,8CAYZ\"}") ============================= test.tsx_test_component_productTitle_useComputed_ZVQVUkxqtiQ.js (ENTRY POINT)== export const test_component_productTitle_useComputed_ZVQVUkxqtiQ = ()=>{ @@ -67,10 +66,10 @@ import { _jsxSorted } from "@qwik.dev/core"; import { inlineTranslate } from "translate-lib"; import { qrl } from "@qwik.dev/core"; import { useComputedQrl } from "@qwik.dev/core"; -const i_ZVQVUkxqtiQ = ()=>import("./test.tsx_test_component_productTitle_useComputed_ZVQVUkxqtiQ"); +const _qrl_test_component_productTitle_useComputed_ZVQVUkxqtiQ = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_productTitle_useComputed_ZVQVUkxqtiQ"), "test_component_productTitle_useComputed_ZVQVUkxqtiQ"); export const test_component_LUXeXe0DQrg = ()=>{ const t = inlineTranslate(); - const productTitle = useComputedQrl(/*#__PURE__*/ qrl(i_ZVQVUkxqtiQ, "test_component_productTitle_useComputed_ZVQVUkxqtiQ")); + const productTitle = useComputedQrl(_qrl_test_component_productTitle_useComputed_ZVQVUkxqtiQ); return /*#__PURE__*/ _jsxSorted("img", { alt: `${t('home.imageAlt.founded-product:')} ${productTitle.value}`, attr: t('home.imageAlt.founded-product:') diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props.snap index 0bc1873997d..6655d6d7f32 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4434 +assertion_line: 4445 expression: output -snapshot_kind: text --- ==INPUT== @@ -19,11 +18,11 @@ snapshot_kind: text import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,6EAIZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,8CAIZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { _getConstProps } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop.snap index 4a3a138635f..ddc4563d347 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4453 +assertion_line: 4464 expression: output -snapshot_kind: text --- ==INPUT== @@ -19,11 +18,11 @@ snapshot_kind: text import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,6EAIZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,8CAIZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { _getConstProps } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop2.snap index fda211b66b9..91e73e3a582 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop2.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4472 +assertion_line: 4483 expression: output -snapshot_kind: text --- ==INPUT== @@ -19,11 +18,11 @@ snapshot_kind: text import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,6EAIZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,8CAIZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { _getConstProps } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop3.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop3.snap index af2b2b48758..cf749b42134 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop3.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop3.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4491 +assertion_line: 4502 expression: output -snapshot_kind: text --- ==INPUT== @@ -20,11 +19,11 @@ snapshot_kind: text import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIE,6BAAe,6EAIZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIE,6BAAe,8CAIZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { Foo } from "./foo"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop4.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop4.snap index f0bcaacb2df..627dcf2c73e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop4.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop4.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4512 +assertion_line: 4522 expression: output --- ==INPUT== @@ -16,11 +16,11 @@ expression: output import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,6EAEZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,8CAEZ\"}") ============================= test.tsx_test_component_button_q_e_click_qwSL5gM03T4.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop5.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop5.snap index ada55ede488..80531b9971b 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop5.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop5.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4529 +assertion_line: 4539 expression: output --- ==INPUT== @@ -26,14 +26,17 @@ import { _getConstProps } from "@qwik.dev/core"; import { _jsxSplit } from "@qwik.dev/core"; import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;AAOE,6BAAe,6EAKZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;AAOE,6BAAe,8CAKZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== +import { _getConstProps } from "@qwik.dev/core"; +import { _getVarProps } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; +import { _jsxSplit } from "@qwik.dev/core"; function Hola(props) { return /*#__PURE__*/ _jsxSplit("div", { ..._getVarProps(props) @@ -47,7 +50,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";AAGE,SAAS,KAAK,KAAU;IACvB,qBAAO,UAAC;wBAAQ;sBAAA;AACjB;0CAE0B;IAC1B,qBAAO,WAAC;sBACP,WAAC,mBAAI;sBACL,WAAC,mBAAI;;AAEN\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAGE,SAAS,KAAK,KAAU;IACvB,qBAAO,UAAC;wBAAQ;sBAAA;AACjB;0CAE0B;IAC1B,qBAAO,WAAC;sBACP,WAAC,mBAAI;sBACL,WAAC,mBAAI;;AAEN\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_and_item_index_in_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_and_item_index_in_loop.snap index 02eca61d065..8e05cc04787 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_and_item_index_in_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_and_item_index_in_loop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5439 +assertion_line: 5472 expression: output --- ==INPUT== @@ -24,11 +24,11 @@ export default component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,6EAUZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,8CAUZ\"}") ============================= test.tsx_test_component_div_div_q_e_click_Mc600uqO6ps.js (ENTRY POINT)== export const test_component_div_div_q_e_click_Mc600uqO6ps = (_, _1, val, i, index)=>console.log(val, i, index); @@ -67,17 +67,16 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; -const i_Mc600uqO6ps = ()=>import("./test.tsx_test_component_div_div_q_e_click_Mc600uqO6ps"); +const _qrl_test_component_div_div_q_e_click_Mc600uqO6ps = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_div_div_q_e_click_Mc600uqO6ps"), "test_component_div_div_q_e_click_Mc600uqO6ps"); export const test_component_LUXeXe0DQrg = ()=>{ const arr = useSignal([ 'a', 'b' ]); - const test_component_div_div_q_e_click_Mc600uqO6ps = /*#__PURE__*/ qrl(i_Mc600uqO6ps, "test_component_div_div_q_e_click_Mc600uqO6ps"); return /*#__PURE__*/ _jsxSorted("div", null, null, arr.value.map((val, i)=>{ const index = i + 1; return /*#__PURE__*/ _jsxSorted("div", { - "q-e:click": test_component_div_div_q_e_click_Mc600uqO6ps, + "q-e:click": _qrl_test_component_div_div_q_e_click_Mc600uqO6ps, "q:ps": [ val, i, @@ -88,7 +87,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;0CAG0B;IACxB,MAAM,MAAM,UAAU;QAAC;QAAK;KAAI;;IAChC,qBACE,WAAC,mBACE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK;QACnB,MAAM,QAAQ,IAAE;QAChB,qBAAO,WAAC;YAAI,WAAQ;;gBAFN;gBAAK;gBACb;;iBACmD;IAC3D;AAGN\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;0CAG0B;IACxB,MAAM,MAAM,UAAU;QAAC;QAAK;KAAI;IAChC,qBACE,WAAC,mBACE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK;QACnB,MAAM,QAAQ,IAAE;QAChB,qBAAO,WAAC;YAAI,WAAQ;;gBAFN;gBAAK;gBACb;;iBACmD;IAC3D;AAGN\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_in_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_in_loop.snap index 1f061969415..b8578caf539 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_in_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_in_loop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5388 +assertion_line: 5421 expression: output --- ==INPUT== @@ -24,11 +24,11 @@ export default component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,6EAUZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,8CAUZ\"}") ============================= test.tsx_test_component_div_div_q_e_click_Mc600uqO6ps.js (ENTRY POINT)== export const test_component_div_div_q_e_click_Mc600uqO6ps = (_, _1, index)=>console.log(index); @@ -65,24 +65,23 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; -const i_Mc600uqO6ps = ()=>import("./test.tsx_test_component_div_div_q_e_click_Mc600uqO6ps"); +const _qrl_test_component_div_div_q_e_click_Mc600uqO6ps = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_div_div_q_e_click_Mc600uqO6ps"), "test_component_div_div_q_e_click_Mc600uqO6ps"); export const test_component_LUXeXe0DQrg = ()=>{ const arr = useSignal([ 'a', 'b' ]); - const test_component_div_div_q_e_click_Mc600uqO6ps = /*#__PURE__*/ qrl(i_Mc600uqO6ps, "test_component_div_div_q_e_click_Mc600uqO6ps"); return /*#__PURE__*/ _jsxSorted("div", null, null, arr.value.map((val, i)=>{ const index = i + 1; return /*#__PURE__*/ _jsxSorted("div", { - "q-e:click": test_component_div_div_q_e_click_Mc600uqO6ps, + "q-e:click": _qrl_test_component_div_div_q_e_click_Mc600uqO6ps, "q:p": index }, null, val, 0, "u6_0"); }), 1, "u6_1"); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;0CAG0B;IACxB,MAAM,MAAM,UAAU;QAAC;QAAK;KAAI;;IAChC,qBACE,WAAC,mBACE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK;QACnB,MAAM,QAAQ,IAAE;QAChB,qBAAO,WAAC;YAAI,WAAQ;mBADd;iBAC2C;IACnD;AAGN\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;0CAG0B;IACxB,MAAM,MAAM,UAAU;QAAC;QAAK;KAAI;IAChC,qBACE,WAAC,mBACE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK;QACnB,MAAM,QAAQ,IAAE;QAChB,qBAAO,WAAC;YAAI,WAAQ;mBADd;iBAC2C;IACnD;AAGN\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_component_with_normal_function.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_component_with_normal_function.snap index 93ac660be25..9ce327edcc4 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_component_with_normal_function.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_component_with_normal_function.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5049 +assertion_line: 5086 expression: output --- ==INPUT== @@ -20,8 +20,8 @@ const Foo = component$(function() { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_HTDRsvUbLiE = ()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"); -/*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_HTDRsvUbLiE, "Foo_component_HTDRsvUbLiE")); +const _qrl_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE"); +/*#__PURE__*/ componentQrl(_qrl_Foo_component_HTDRsvUbLiE); Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;cAEY\"}") @@ -31,10 +31,10 @@ import { _jsxSorted } from "@qwik.dev/core"; import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; -const i_AuJ9mTBx5YA = ()=>import("./test.tsx_Foo_component_Inner_component_AuJ9mTBx5YA"); +const _qrl_Foo_component_Inner_component_AuJ9mTBx5YA = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_Inner_component_AuJ9mTBx5YA"), "Foo_component_Inner_component_AuJ9mTBx5YA"); export const Foo_component_HTDRsvUbLiE = function() { const data = useSignal([]); - const Inner = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_AuJ9mTBx5YA, "Foo_component_Inner_component_AuJ9mTBx5YA")); + const Inner = /*#__PURE__*/ componentQrl(_qrl_Foo_component_Inner_component_AuJ9mTBx5YA); return /*#__PURE__*/ _jsxSorted(Inner, null, { data: data }, null, 3, "u6_2"); @@ -69,12 +69,11 @@ import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; const _hf0 = (p0)=>p0.value.id; const _hf0_str = "p0.value.id"; -const i_7oFgEhSmgvY = ()=>import("./test.tsx_Foo_component_Inner_component_div_p_q_e_click_7oFgEhSmgvY"); +const _qrl_Foo_component_Inner_component_div_p_q_e_click_7oFgEhSmgvY = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_Inner_component_div_p_q_e_click_7oFgEhSmgvY"), "Foo_component_Inner_component_div_p_q_e_click_7oFgEhSmgvY"); export const Foo_component_Inner_component_AuJ9mTBx5YA = function(props) { const data = props.data; - const Foo_component_Inner_component_div_p_q_e_click_7oFgEhSmgvY = /*#__PURE__*/ qrl(i_7oFgEhSmgvY, "Foo_component_Inner_component_div_p_q_e_click_7oFgEhSmgvY"); return /*#__PURE__*/ _jsxSorted("div", null, null, data.value.map((item)=>/*#__PURE__*/ _jsxSorted("p", { - "q-e:click": Foo_component_Inner_component_div_p_q_e_click_7oFgEhSmgvY, + "q-e:click": _qrl_Foo_component_Inner_component_div_p_q_e_click_7oFgEhSmgvY, "q:p": item }, null, _fnSignal(_hf0, [ item @@ -82,7 +81,7 @@ export const Foo_component_Inner_component_AuJ9mTBx5YA = function(props) { }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;mBAMwF,GAAK,KAAK,CAAC,EAAE;;;yDAF1E,SAAS,KAAK;IACrC,MAAM,OAAO,MAAM,IAAI;;IACvB,qBAAO,WAAC,mBAAK,KAAK,KAAK,CAAC,GAAG,CAAC,CAAA,qBAAQ,WAAC;YAAE,WAAQ;mBAAnB;;;;AAC9B\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;mBAMwF,GAAK,KAAK,CAAC,EAAE;;;yDAF1E,SAAS,KAAK;IACrC,MAAM,OAAO,MAAM,IAAI;IACvB,qBAAO,WAAC,mBAAK,KAAK,KAAK,CAAC,GAAG,CAAC,CAAA,qBAAQ,WAAC;YAAE,WAAQ;mBAAnB;;;;AAC9B\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_event_names_without_jsx_transpile.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_event_names_without_jsx_transpile.snap index ae4cbb67355..cb2e16a9cdc 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_event_names_without_jsx_transpile.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_event_names_without_jsx_transpile.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4741 +assertion_line: 4751 expression: output --- ==INPUT== @@ -54,11 +54,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_n7HuG2hhU0Q = ()=>import("./test.tsx_Greeter_component_n7HuG2hhU0Q"); -export const Greeter = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_n7HuG2hhU0Q, "Greeter_component_n7HuG2hhU0Q")); +const _qrl_Greeter_component_n7HuG2hhU0Q = /*#__PURE__*/ qrl(()=>import("./test.tsx_Greeter_component_n7HuG2hhU0Q"), "Greeter_component_n7HuG2hhU0Q"); +export const Greeter = /*#__PURE__*/ componentQrl(_qrl_Greeter_component_n7HuG2hhU0Q); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA,OAAO,MAAM,wBAAU,gFAYpB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA,OAAO,MAAM,wBAAU,iDAYpB\"}") ============================= test.tsx_Greeter_component_div_div_q_e_click_wYSPnQEGCbA.tsx (ENTRY POINT)== export const Greeter_component_div_div_q_e_click_wYSPnQEGCbA = ()=>{}; @@ -115,23 +115,23 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import mongo from "mongodb"; import { qrl } from "@qwik.dev/core"; -const i_B9tqzgApK9E = ()=>import("./test.tsx_Greeter_component_div_div_q_e_click_2_B9tqzgApK9E"); -const i_s7p0zjWZpqo = ()=>import("./test.tsx_Greeter_component_div_div_q_e_click_1_s7p0zjWZpqo"); -const i_wYSPnQEGCbA = ()=>import("./test.tsx_Greeter_component_div_div_q_e_click_wYSPnQEGCbA"); +const _qrl_Greeter_component_div_div_q_e_click_1_s7p0zjWZpqo = /*#__PURE__*/ qrl(()=>import("./test.tsx_Greeter_component_div_div_q_e_click_1_s7p0zjWZpqo"), "Greeter_component_div_div_q_e_click_1_s7p0zjWZpqo"); +const _qrl_Greeter_component_div_div_q_e_click_2_B9tqzgApK9E = /*#__PURE__*/ qrl(()=>import("./test.tsx_Greeter_component_div_div_q_e_click_2_B9tqzgApK9E"), "Greeter_component_div_div_q_e_click_2_B9tqzgApK9E"); +const _qrl_Greeter_component_div_div_q_e_click_wYSPnQEGCbA = /*#__PURE__*/ qrl(()=>import("./test.tsx_Greeter_component_div_div_q_e_click_wYSPnQEGCbA"), "Greeter_component_div_div_q_e_click_wYSPnQEGCbA"); export const Greeter_component_n7HuG2hhU0Q = ()=>{ // Double count watch useTask$(async ()=>{ await mongo.users(); }); return
-
-
-
+
+
+
; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;6CAIkC;IACjC,qBAAqB;IACrB,SAAS;QACR,MAAM,MAAM,KAAK;IAClB;IACA,QACE,IAAI;GACJ,CAAC,IAAI,iGAAqB;GAC1B,CAAC,IAAI,mGAAqB;GAC1B,CAAC,IAAI,mGAAqB;EAC3B,EAAE;AAEJ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;6CAIkC;IACjC,qBAAqB;IACrB,SAAS;QACR,MAAM,MAAM,KAAK;IAClB;IACA,QACE,IAAI;GACJ,CAAC,IAAI,kEAAqB;GAC1B,CAAC,IAAI,oEAAqB;GAC1B,CAAC,IAAI,oEAAqB;EAC3B,EAAE;AAEJ\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handler_in_for_of_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handler_in_for_of_loop.snap index b9a0033f15d..d1a7e829f28 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handler_in_for_of_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handler_in_for_of_loop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5664 +assertion_line: 5697 expression: output --- ==INPUT== @@ -23,11 +23,11 @@ export default component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,6EASZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,8CASZ\"}") ============================= test.tsx_test_component_div_q_e_click_omwK2O280Tk.js (ENTRY POINT)== export const test_component_div_q_e_click_omwK2O280Tk = (_, _1, val)=>console.log(val); @@ -64,23 +64,22 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; -const i_omwK2O280Tk = ()=>import("./test.tsx_test_component_div_q_e_click_omwK2O280Tk"); +const _qrl_test_component_div_q_e_click_omwK2O280Tk = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_div_q_e_click_omwK2O280Tk"), "test_component_div_q_e_click_omwK2O280Tk"); export const test_component_LUXeXe0DQrg = ()=>{ const arr = useSignal([ 'a', 'b' ]); const items = []; - const test_component_div_q_e_click_omwK2O280Tk = /*#__PURE__*/ qrl(i_omwK2O280Tk, "test_component_div_q_e_click_omwK2O280Tk"); for (const val of arr.value)items.push(/*#__PURE__*/ _jsxSorted("div", { - "q-e:click": test_component_div_q_e_click_omwK2O280Tk, + "q-e:click": _qrl_test_component_div_q_e_click_omwK2O280Tk, "q:p": val }, null, val, 2, "u6_0")); return /*#__PURE__*/ _jsxSorted("div", null, null, items, 1, "u6_1"); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;0CAG0B;IACxB,MAAM,MAAM,UAAU;QAAC;QAAK;KAAI;IAChC,MAAM,QAAQ,EAAE;;IAChB,KAAK,MAAM,OAAO,IAAI,KAAK,CACzB,MAAM,IAAI,eACR,WAAC;QAAI,WAAQ;eAFN;aAEiC;IAG5C,qBAAO,WAAC,mBAAK;AACf\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;0CAG0B;IACxB,MAAM,MAAM,UAAU;QAAC;QAAK;KAAI;IAChC,MAAM,QAAQ,EAAE;IAChB,KAAK,MAAM,OAAO,IAAI,KAAK,CACzB,MAAM,IAAI,eACR,WAAC;QAAI,WAAQ;eAFN;aAEiC;IAG5C,qBAAO,WAAC,mBAAK;AACf\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handlers_capturing_cross_scope_in_nested_loops.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handlers_capturing_cross_scope_in_nested_loops.snap index 8d2dbf16a1f..ddc57e58c12 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handlers_capturing_cross_scope_in_nested_loops.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handlers_capturing_cross_scope_in_nested_loops.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5521 +assertion_line: 5554 expression: output --- ==INPUT== @@ -37,11 +37,11 @@ export default component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,6EAuBZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,8CAuBZ\"}") ============================= test.tsx_test_component_div_div_span_button_q_e_click_oBFNw2cK30o.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_loop_multiple_handler_with_different_captures.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_loop_multiple_handler_with_different_captures.snap index acab8176c4f..4fcdfea82e2 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_loop_multiple_handler_with_different_captures.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_loop_multiple_handler_with_different_captures.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5711 +assertion_line: 5721 expression: output --- ==INPUT== @@ -33,11 +33,11 @@ export default component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,6EAmBZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,8CAmBZ\"}") ============================= test.tsx_test_component_div_div_q_e_keydown_a6RR59yQlXM.js (ENTRY POINT)== export const test_component_div_div_q_e_keydown_a6RR59yQlXM = (_, _1, _2, plusTwo, double)=>console.log(plusTwo, double); @@ -109,22 +109,20 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; -const i_Mc600uqO6ps = ()=>import("./test.tsx_test_component_div_div_q_e_click_Mc600uqO6ps"); -const i_a6RR59yQlXM = ()=>import("./test.tsx_test_component_div_div_q_e_keydown_a6RR59yQlXM"); +const _qrl_test_component_div_div_q_e_click_Mc600uqO6ps = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_div_div_q_e_click_Mc600uqO6ps"), "test_component_div_div_q_e_click_Mc600uqO6ps"); +const _qrl_test_component_div_div_q_e_keydown_a6RR59yQlXM = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_div_div_q_e_keydown_a6RR59yQlXM"), "test_component_div_div_q_e_keydown_a6RR59yQlXM"); export const test_component_LUXeXe0DQrg = ()=>{ const arr = useSignal([ 'a', 'b' ]); - const test_component_div_div_q_e_click_Mc600uqO6ps = /*#__PURE__*/ qrl(i_Mc600uqO6ps, "test_component_div_div_q_e_click_Mc600uqO6ps"); - const test_component_div_div_q_e_keydown_a6RR59yQlXM = /*#__PURE__*/ qrl(i_a6RR59yQlXM, "test_component_div_div_q_e_keydown_a6RR59yQlXM"); return /*#__PURE__*/ _jsxSorted("div", null, null, arr.value.map((val, i)=>{ const plusOne = i + 1; const plusTwo = i + 2; const double = i * 2; return /*#__PURE__*/ _jsxSorted("div", { - "q-e:click": test_component_div_div_q_e_click_Mc600uqO6ps, - "q-e:keydown": test_component_div_div_q_e_keydown_a6RR59yQlXM, + "q-e:click": _qrl_test_component_div_div_q_e_click_Mc600uqO6ps, + "q-e:keydown": _qrl_test_component_div_div_q_e_keydown_a6RR59yQlXM, "q:ps": [ plusOne, plusTwo, @@ -135,7 +133,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;0CAG0B;IACxB,MAAM,MAAM,UAAU;QAAC;QAAK;KAAI;;;IAChC,qBACE,WAAC,mBACE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK;QACnB,MAAM,UAAU,IAAI;QACpB,MAAM,UAAU,IAAI;QACpB,MAAM,SAAS,IAAI;QACnB,qBACE,WAAC;YACC,WAAQ;YACR,aAAU;;gBANR;gBACA;gBACA;;iBAMD;IAGP;AAGN\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;0CAG0B;IACxB,MAAM,MAAM,UAAU;QAAC;QAAK;KAAI;IAChC,qBACE,WAAC,mBACE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK;QACnB,MAAM,UAAU,IAAI;QACpB,MAAM,UAAU,IAAI;QACpB,MAAM,SAAS,IAAI;QACnB,qBACE,WAAC;YACC,WAAQ;YACR,aAAU;;gBANR;gBACA;gBACA;;iBAMD;IAGP;AAGN\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_and_item_index_in_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_and_item_index_in_loop.snap index 568db850bb7..a2e8bca591f 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_and_item_index_in_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_and_item_index_in_loop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5464 +assertion_line: 5497 expression: output --- ==INPUT== @@ -25,11 +25,11 @@ export default component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,6EAWZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,8CAWZ\"}") ============================= test.tsx_test_component_div_div_q_e_click_Mc600uqO6ps.js (ENTRY POINT)== export const test_component_div_div_q_e_click_Mc600uqO6ps = (_, _1, val, i, index, value)=>console.log(value, index, val, i); @@ -69,18 +69,17 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; -const i_Mc600uqO6ps = ()=>import("./test.tsx_test_component_div_div_q_e_click_Mc600uqO6ps"); +const _qrl_test_component_div_div_q_e_click_Mc600uqO6ps = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_div_div_q_e_click_Mc600uqO6ps"), "test_component_div_div_q_e_click_Mc600uqO6ps"); export const test_component_LUXeXe0DQrg = ()=>{ const arr = useSignal([ 'a', 'b' ]); - const test_component_div_div_q_e_click_Mc600uqO6ps = /*#__PURE__*/ qrl(i_Mc600uqO6ps, "test_component_div_div_q_e_click_Mc600uqO6ps"); return /*#__PURE__*/ _jsxSorted("div", null, null, arr.value.map((val, i)=>{ const index = i + 1; const value = val.toUpperCase(); return /*#__PURE__*/ _jsxSorted("div", { - "q-e:click": test_component_div_div_q_e_click_Mc600uqO6ps, + "q-e:click": _qrl_test_component_div_div_q_e_click_Mc600uqO6ps, "q:ps": [ val, i, @@ -92,7 +91,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;0CAG0B;IACxB,MAAM,MAAM,UAAU;QAAC;QAAK;KAAI;;IAChC,qBACE,WAAC,mBACE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK;QACnB,MAAM,QAAQ,IAAE;QACtB,MAAM,QAAQ,IAAI,WAAW;QACvB,qBAAO,WAAC;YAAI,WAAQ;;gBAHN;gBAAK;gBACb;gBACN;;iBACgE;IAClE;AAGN\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;0CAG0B;IACxB,MAAM,MAAM,UAAU;QAAC;QAAK;KAAI;IAChC,qBACE,WAAC,mBACE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK;QACnB,MAAM,QAAQ,IAAE;QACtB,MAAM,QAAQ,IAAI,WAAW;QACvB,qBAAO,WAAC;YAAI,WAAQ;;gBAHN;gBAAK;gBACb;gBACN;;iBACgE;IAClE;AAGN\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_in_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_in_loop.snap index abb0dcc6207..ccc7242c79d 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_in_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_in_loop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5413 +assertion_line: 5446 expression: output --- ==INPUT== @@ -25,11 +25,11 @@ export default component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,6EAWZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,8CAWZ\"}") ============================= test.tsx_test_component_div_div_q_e_click_Mc600uqO6ps.js (ENTRY POINT)== export const test_component_div_div_q_e_click_Mc600uqO6ps = (_, _1, index, value)=>console.log(value, index); @@ -67,18 +67,17 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; -const i_Mc600uqO6ps = ()=>import("./test.tsx_test_component_div_div_q_e_click_Mc600uqO6ps"); +const _qrl_test_component_div_div_q_e_click_Mc600uqO6ps = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_div_div_q_e_click_Mc600uqO6ps"), "test_component_div_div_q_e_click_Mc600uqO6ps"); export const test_component_LUXeXe0DQrg = ()=>{ const arr = useSignal([ 'a', 'b' ]); - const test_component_div_div_q_e_click_Mc600uqO6ps = /*#__PURE__*/ qrl(i_Mc600uqO6ps, "test_component_div_div_q_e_click_Mc600uqO6ps"); return /*#__PURE__*/ _jsxSorted("div", null, null, arr.value.map((val, i)=>{ const index = i + 1; const value = val.toUpperCase(); return /*#__PURE__*/ _jsxSorted("div", { - "q-e:click": test_component_div_div_q_e_click_Mc600uqO6ps, + "q-e:click": _qrl_test_component_div_div_q_e_click_Mc600uqO6ps, "q:ps": [ index, value @@ -88,7 +87,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;0CAG0B;IACxB,MAAM,MAAM,UAAU;QAAC;QAAK;KAAI;;IAChC,qBACE,WAAC,mBACE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK;QACnB,MAAM,QAAQ,IAAE;QACtB,MAAM,QAAQ,IAAI,WAAW;QACvB,qBAAO,WAAC;YAAI,WAAQ;;gBAFd;gBACN;;iBACwD;IAC1D;AAGN\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;0CAG0B;IACxB,MAAM,MAAM,UAAU;QAAC;QAAK;KAAI;IAChC,qBACE,WAAC,mBACE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK;QACnB,MAAM,QAAQ,IAAE;QACtB,MAAM,QAAQ,IAAI,WAAW;QACvB,qBAAO,WAAC;YAAI,WAAQ;;gBAFd;gBACN;;iBACwD;IAC1D;AAGN\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers.snap index 305d0125a50..a1b0928354a 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5096 +assertion_line: 5133 expression: output --- ==INPUT== @@ -22,8 +22,8 @@ const Foo = component$(function() { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_HTDRsvUbLiE = ()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"); -/*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_HTDRsvUbLiE, "Foo_component_HTDRsvUbLiE")); +const _qrl_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE"); +/*#__PURE__*/ componentQrl(_qrl_Foo_component_HTDRsvUbLiE); Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;cAEY\"}") @@ -32,26 +32,23 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; -const i_P9F6Osn3X6Y = ()=>import("./test.tsx_Foo_component_div_div_q_e_mouseover_P9F6Osn3X6Y"); -const i_PjMbeUzoAMk = ()=>import("./test.tsx_Foo_component_div_div_p_q_e_click_PjMbeUzoAMk"); -const i_vKrX4PmH2aM = ()=>import("./test.tsx_Foo_component_div_div_q_e_click_vKrX4PmH2aM"); +const _qrl_Foo_component_div_div_p_q_e_click_PjMbeUzoAMk = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_div_p_q_e_click_PjMbeUzoAMk"), "Foo_component_div_div_p_q_e_click_PjMbeUzoAMk"); +const _qrl_Foo_component_div_div_q_e_click_vKrX4PmH2aM = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_div_q_e_click_vKrX4PmH2aM"), "Foo_component_div_div_q_e_click_vKrX4PmH2aM"); +const _qrl_Foo_component_div_div_q_e_mouseover_P9F6Osn3X6Y = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_div_q_e_mouseover_P9F6Osn3X6Y"), "Foo_component_div_div_q_e_mouseover_P9F6Osn3X6Y"); export const Foo_component_HTDRsvUbLiE = function() { const data = useSignal([]); - const Foo_component_div_div_q_e_click_vKrX4PmH2aM = /*#__PURE__*/ qrl(i_vKrX4PmH2aM, "Foo_component_div_div_q_e_click_vKrX4PmH2aM"); - const Foo_component_div_div_q_e_mouseover_P9F6Osn3X6Y = /*#__PURE__*/ qrl(i_P9F6Osn3X6Y, "Foo_component_div_div_q_e_mouseover_P9F6Osn3X6Y"); - const Foo_component_div_div_p_q_e_click_PjMbeUzoAMk = /*#__PURE__*/ qrl(i_PjMbeUzoAMk, "Foo_component_div_div_p_q_e_click_PjMbeUzoAMk"); return /*#__PURE__*/ _jsxSorted("div", null, null, data.value.map((row)=>/*#__PURE__*/ _jsxSorted("div", { - "q-e:click": Foo_component_div_div_q_e_click_vKrX4PmH2aM, - "q-e:mouseover": Foo_component_div_div_q_e_mouseover_P9F6Osn3X6Y, + "q-e:click": _qrl_Foo_component_div_div_q_e_click_vKrX4PmH2aM, + "q-e:mouseover": _qrl_Foo_component_div_div_q_e_mouseover_P9F6Osn3X6Y, "q:p": row }, null, /*#__PURE__*/ _jsxSorted("p", { - "q-e:click": Foo_component_div_div_p_q_e_click_PjMbeUzoAMk, + "q-e:click": _qrl_Foo_component_div_div_p_q_e_click_PjMbeUzoAMk, "q:p": row }, null, item.value.id, 0, null), 0, "u6_0")), 1, "u6_1"); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;yCAEuB;IACrB,MAAM,OAAO,UAAyB,EAAE;;;;IACxC,qBAAO,WAAC,mBACR,KAAK,KAAK,CAAC,GAAG,CAAC,CAAA,oBACd,WAAC;YAAI,WAAQ;YAAmC,eAAY;mBAD9C;+BAEf,WAAC;YAAE,WAAQ;mBAFI;iBAE0C,KAAK,KAAK,CAAC,EAAE;AAIxE\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;yCAEuB;IACrB,MAAM,OAAO,UAAyB,EAAE;IACxC,qBAAO,WAAC,mBACR,KAAK,KAAK,CAAC,GAAG,CAAC,CAAA,oBACd,WAAC;YAAI,WAAQ;YAAmC,eAAY;mBAD9C;+BAEf,WAAC;YAAE,WAAQ;mBAFI;iBAE0C,KAAK,KAAK,CAAC,EAAE;AAIxE\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers_case2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers_case2.snap index a2aa1dea029..987c9634a63 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers_case2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers_case2.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5119 +assertion_line: 5156 expression: output --- ==INPUT== @@ -22,8 +22,8 @@ const Foo = component$(function() { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_HTDRsvUbLiE = ()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"); -/*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_HTDRsvUbLiE, "Foo_component_HTDRsvUbLiE")); +const _qrl_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE"); +/*#__PURE__*/ componentQrl(_qrl_Foo_component_HTDRsvUbLiE); Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;cAEY\"}") @@ -32,29 +32,26 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; -const i_P9F6Osn3X6Y = ()=>import("./test.tsx_Foo_component_div_div_q_e_mouseover_P9F6Osn3X6Y"); -const i_PjMbeUzoAMk = ()=>import("./test.tsx_Foo_component_div_div_p_q_e_click_PjMbeUzoAMk"); -const i_vKrX4PmH2aM = ()=>import("./test.tsx_Foo_component_div_div_q_e_click_vKrX4PmH2aM"); +const _qrl_Foo_component_div_div_p_q_e_click_PjMbeUzoAMk = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_div_p_q_e_click_PjMbeUzoAMk"), "Foo_component_div_div_p_q_e_click_PjMbeUzoAMk"); +const _qrl_Foo_component_div_div_q_e_click_vKrX4PmH2aM = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_div_q_e_click_vKrX4PmH2aM"), "Foo_component_div_div_q_e_click_vKrX4PmH2aM"); +const _qrl_Foo_component_div_div_q_e_mouseover_P9F6Osn3X6Y = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_div_q_e_mouseover_P9F6Osn3X6Y"), "Foo_component_div_div_q_e_mouseover_P9F6Osn3X6Y"); export const Foo_component_HTDRsvUbLiE = function() { const data = useSignal([]); - const Foo_component_div_div_q_e_click_vKrX4PmH2aM = /*#__PURE__*/ qrl(i_vKrX4PmH2aM, "Foo_component_div_div_q_e_click_vKrX4PmH2aM"); - const Foo_component_div_div_q_e_mouseover_P9F6Osn3X6Y = /*#__PURE__*/ qrl(i_P9F6Osn3X6Y, "Foo_component_div_div_q_e_mouseover_P9F6Osn3X6Y"); - const Foo_component_div_div_p_q_e_click_PjMbeUzoAMk = /*#__PURE__*/ qrl(i_PjMbeUzoAMk, "Foo_component_div_div_p_q_e_click_PjMbeUzoAMk"); return /*#__PURE__*/ _jsxSorted("div", null, null, data.value.map((row, idx)=>/*#__PURE__*/ _jsxSorted("div", { - "q-e:click": Foo_component_div_div_q_e_click_vKrX4PmH2aM, - "q-e:mouseover": Foo_component_div_div_q_e_mouseover_P9F6Osn3X6Y, + "q-e:click": _qrl_Foo_component_div_div_q_e_click_vKrX4PmH2aM, + "q-e:mouseover": _qrl_Foo_component_div_div_q_e_mouseover_P9F6Osn3X6Y, "q:ps": [ row, idx ] }, null, /*#__PURE__*/ _jsxSorted("p", { - "q-e:click": Foo_component_div_div_p_q_e_click_PjMbeUzoAMk, + "q-e:click": _qrl_Foo_component_div_div_p_q_e_click_PjMbeUzoAMk, "q:p": row }, null, item.value.id, 0, null), 0, "u6_0")), 1, "u6_1"); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;yCAEuB;IACrB,MAAM,OAAO,UAAyB,EAAE;;;;IACxC,qBAAO,WAAC,mBACR,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,oBACpB,WAAC;YAAI,WAAQ;YAAwC,eAAY;;gBADlD;gBAAK;;+BAErB,WAAC;YAAE,WAAQ;mBAFK;iBAEyC,KAAK,KAAK,CAAC,EAAE;AAIxE\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;yCAEuB;IACrB,MAAM,OAAO,UAAyB,EAAE;IACxC,qBAAO,WAAC,mBACR,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,oBACpB,WAAC;YAAI,WAAQ;YAAwC,eAAY;;gBADlD;gBAAK;;+BAErB,WAAC;YAAE,WAAQ;mBAFK;iBAEyC,KAAK,KAAK,CAAC,EAAE;AAIxE\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops.snap index aae17d2d646..dd636f9ef54 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5097 +assertion_line: 5107 expression: output --- ==INPUT== @@ -25,8 +25,8 @@ const Foo = component$(function() { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_HTDRsvUbLiE = ()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"); -/*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_HTDRsvUbLiE, "Foo_component_HTDRsvUbLiE")); +const _qrl_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE"); +/*#__PURE__*/ componentQrl(_qrl_Foo_component_HTDRsvUbLiE); Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;cAEY\"}") @@ -38,18 +38,17 @@ import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; const _hf0 = (p0)=>p0.value.id; const _hf0_str = "p0.value.id"; +const _qrl_Foo_component_div_div_q_e_click_vKrX4PmH2aM = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_div_q_e_click_vKrX4PmH2aM"), "Foo_component_div_div_q_e_click_vKrX4PmH2aM"); const i_PjMbeUzoAMk = ()=>import("./test.tsx_Foo_component_div_div_p_q_e_click_PjMbeUzoAMk"); -const i_vKrX4PmH2aM = ()=>import("./test.tsx_Foo_component_div_div_q_e_click_vKrX4PmH2aM"); export const Foo_component_HTDRsvUbLiE = function() { const data = useSignal([]); const data2 = useSignal([]); - const Foo_component_div_div_q_e_click_vKrX4PmH2aM = /*#__PURE__*/ qrl(i_vKrX4PmH2aM, "Foo_component_div_div_q_e_click_vKrX4PmH2aM"); return /*#__PURE__*/ _jsxSorted("div", null, null, data.value.map((row)=>{ const Foo_component_div_div_p_q_e_click_PjMbeUzoAMk = /*#__PURE__*/ qrl(i_PjMbeUzoAMk, "Foo_component_div_div_p_q_e_click_PjMbeUzoAMk", [ row ]); return /*#__PURE__*/ _jsxSorted("div", { - "q-e:click": Foo_component_div_div_q_e_click_vKrX4PmH2aM, + "q-e:click": _qrl_Foo_component_div_div_q_e_click_vKrX4PmH2aM, "q:p": row }, null, data2.value.map((item)=>/*#__PURE__*/ _jsxSorted("p", { "q-e:click": Foo_component_div_div_p_q_e_click_PjMbeUzoAMk, @@ -67,7 +66,7 @@ export const Foo_component_HTDRsvUbLiE = function() { }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;mBASkE,GAAI,KAAK,CAAC,EAAE;;;;yCAPvD;IACrB,MAAM,OAAO,UAAyB,EAAE;IACxC,MAAM,QAAQ,UAAyB,EAAE;;IACzC,qBAAO,WAAC,mBACR,KAAK,KAAK,CAAC,GAAG,CAAC,CAAA;;;;6BACd,WAAC;YAAI,WAAQ;mBADC;iBAEd,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA,qBACf,WAAC;gBAAE,WAAQ;uBADI;;;;;gBAC4D;;;;;;AAK/E\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;mBASkE,GAAI,KAAK,CAAC,EAAE;;;;yCAPvD;IACrB,MAAM,OAAO,UAAyB,EAAE;IACxC,MAAM,QAAQ,UAAyB,EAAE;IACzC,qBAAO,WAAC,mBACR,KAAK,KAAK,CAAC,GAAG,CAAC,CAAA;;;;6BACd,WAAC;YAAI,WAAQ;mBADC;iBAEd,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA,qBACf,WAAC;gBAAE,WAAQ;uBADI;;;;;gBAC4D;;;;;;AAK/E\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops_handler_captures_only_inner_scope.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops_handler_captures_only_inner_scope.snap index 454c580672b..c7286ebcb91 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops_handler_captures_only_inner_scope.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops_handler_captures_only_inner_scope.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5591 +assertion_line: 5624 expression: output --- ==INPUT== @@ -32,11 +32,11 @@ export default component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,6EAkBZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,8CAkBZ\"}") ============================= test.tsx_test_component_div_div_span_button_q_e_click_oBFNw2cK30o.js (ENTRY POINT)== export const test_component_div_div_span_button_q_e_click_oBFNw2cK30o = (_, _1, cellKey)=>console.log(cellKey); @@ -73,7 +73,7 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; -const i_oBFNw2cK30o = ()=>import("./test.tsx_test_component_div_div_span_button_q_e_click_oBFNw2cK30o"); +const _qrl_test_component_div_div_span_button_q_e_click_oBFNw2cK30o = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_div_div_span_button_q_e_click_oBFNw2cK30o"), "test_component_div_div_span_button_q_e_click_oBFNw2cK30o"); export const test_component_LUXeXe0DQrg = ()=>{ const matrix = useSignal([ [ @@ -85,18 +85,17 @@ export const test_component_LUXeXe0DQrg = ()=>{ 'd' ] ]); - const test_component_div_div_span_button_q_e_click_oBFNw2cK30o = /*#__PURE__*/ qrl(i_oBFNw2cK30o, "test_component_div_div_span_button_q_e_click_oBFNw2cK30o"); return /*#__PURE__*/ _jsxSorted("div", null, null, matrix.value.map((row, i)=>/*#__PURE__*/ _jsxSorted("div", null, null, row.map((cell, j)=>{ const cellKey = cell + '-' + j; return /*#__PURE__*/ _jsxSorted("span", null, null, /*#__PURE__*/ _jsxSorted("button", { - "q-e:click": test_component_div_div_span_button_q_e_click_oBFNw2cK30o, + "q-e:click": _qrl_test_component_div_div_span_button_q_e_click_oBFNw2cK30o, "q:p": cellKey }, null, cell, 0, null), 1, j); }), 1, i)), 1, "u6_0"); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;0CAG0B;IACxB,MAAM,SAAS,UAAU;QAAC;YAAC;YAAK;SAAI;QAAE;YAAC;YAAK;SAAI;KAAC;;IACjD,qBACE,WAAC,mBACE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,kBACtB,WAAC,mBACE,IAAI,GAAG,CAAC,CAAC,MAAM;YACd,MAAM,UAAU,OAAO,MAAM;YAC7B,qBACE,WAAC,kCACC,WAAC;gBAAO,WAAQ;uBAHd;qBAG6C,mBADtC;QAIf,OARQ;AAalB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;0CAG0B;IACxB,MAAM,SAAS,UAAU;QAAC;YAAC;YAAK;SAAI;QAAE;YAAC;YAAK;SAAI;KAAC;IACjD,qBACE,WAAC,mBACE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,kBACtB,WAAC,mBACE,IAAI,GAAG,CAAC,CAAC,MAAM;YACd,MAAM,UAAU,OAAO,MAAM;YAC7B,qBACE,WAAC,kCACC,WAAC;gBAAO,WAAQ;uBAHd;qBAG6C,mBADtC;QAIf,OARQ;AAalB\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_qrls_in_ternary_expression.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_qrls_in_ternary_expression.snap index db65776f84f..9955aaf8a24 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_qrls_in_ternary_expression.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_qrls_in_ternary_expression.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5170 +assertion_line: 5231 expression: output --- ==INPUT== @@ -66,11 +66,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_V4XAtJSTRKg = ()=>import("./test.tsx_FieldInput_component_V4XAtJSTRKg"); -export const FieldInput = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_V4XAtJSTRKg, "FieldInput_component_V4XAtJSTRKg")); +const _qrl_FieldInput_component_V4XAtJSTRKg = /*#__PURE__*/ qrl(()=>import("./test.tsx_FieldInput_component_V4XAtJSTRKg"), "FieldInput_component_V4XAtJSTRKg"); +export const FieldInput = /*#__PURE__*/ componentQrl(_qrl_FieldInput_component_V4XAtJSTRKg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,2BAAa,mFAmBvB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,2BAAa,oDAmBvB\"}") ============================= test.tsx_FieldInput_component_V4XAtJSTRKg.js (ENTRY POINT)== import { _jsxSorted } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_same_element_one_handler_with_captures_one_without.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_same_element_one_handler_with_captures_one_without.snap index 5ae323f9440..c80a0152335 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_same_element_one_handler_with_captures_one_without.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_same_element_one_handler_with_captures_one_without.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5559 +assertion_line: 5592 expression: output --- ==INPUT== @@ -31,11 +31,11 @@ export default component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,6EAiBZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,8CAiBZ\"}") ============================= test.tsx_test_component_div_div_q_e_keydown_a6RR59yQlXM.js (ENTRY POINT)== export const test_component_div_div_q_e_keydown_a6RR59yQlXM = (_, _1)=>console.log('no capture'); @@ -102,28 +102,26 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; -const i_Mc600uqO6ps = ()=>import("./test.tsx_test_component_div_div_q_e_click_Mc600uqO6ps"); -const i_a6RR59yQlXM = ()=>import("./test.tsx_test_component_div_div_q_e_keydown_a6RR59yQlXM"); +const _qrl_test_component_div_div_q_e_click_Mc600uqO6ps = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_div_div_q_e_click_Mc600uqO6ps"), "test_component_div_div_q_e_click_Mc600uqO6ps"); +const _qrl_test_component_div_div_q_e_keydown_a6RR59yQlXM = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_div_div_q_e_keydown_a6RR59yQlXM"), "test_component_div_div_q_e_keydown_a6RR59yQlXM"); export const test_component_LUXeXe0DQrg = ()=>{ const arr = useSignal([ 'a', 'b' ]); - const test_component_div_div_q_e_click_Mc600uqO6ps = /*#__PURE__*/ qrl(i_Mc600uqO6ps, "test_component_div_div_q_e_click_Mc600uqO6ps"); - const test_component_div_div_q_e_keydown_a6RR59yQlXM = /*#__PURE__*/ qrl(i_a6RR59yQlXM, "test_component_div_div_q_e_keydown_a6RR59yQlXM"); return /*#__PURE__*/ _jsxSorted("div", null, null, arr.value.map((val, i)=>{ const index = i + 1; return /*#__PURE__*/ _jsxSorted("div", { - "q-e:click": test_component_div_div_q_e_click_Mc600uqO6ps, + "q-e:click": _qrl_test_component_div_div_q_e_click_Mc600uqO6ps, "q:p": index }, { - "q-e:keydown": test_component_div_div_q_e_keydown_a6RR59yQlXM + "q-e:keydown": _qrl_test_component_div_div_q_e_keydown_a6RR59yQlXM }, val, 0, "u6_0"); }), 1, "u6_1"); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;0CAG0B;IACxB,MAAM,MAAM,UAAU;QAAC;QAAK;KAAI;;;IAChC,qBACE,WAAC,mBACE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK;QACnB,MAAM,QAAQ,IAAI;QAClB,qBACE,WAAC;YACC,WAAQ;mBAHN;;YAIF,aAAU;WAET;IAGP;AAGN\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;0CAG0B;IACxB,MAAM,MAAM,UAAU;QAAC;QAAK;KAAI;IAChC,qBACE,WAAC,mBACE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK;QACnB,MAAM,QAAQ,IAAI;QAClB,qBACE,WAAC;YACC,WAAQ;mBAHN;;YAIF,aAAU;WAET;IAGP;AAGN\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_three_nested_loops_handler_captures_outer_only.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_three_nested_loops_handler_captures_outer_only.snap index a0b67efcd8a..b755a6b1197 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_three_nested_loops_handler_captures_outer_only.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_three_nested_loops_handler_captures_outer_only.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5624 +assertion_line: 5657 expression: output --- ==INPUT== @@ -39,11 +39,11 @@ export default component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,6EAyBZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,8CAyBZ\"}") ============================= test.tsx_test_component_div_div_div_button_q_e_click_7fyCCEiYKFo.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_two_handlers_capturing_different_block_scope_in_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_two_handlers_capturing_different_block_scope_in_loop.snap index 6b09e1e5523..7c4d28f5e1e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_two_handlers_capturing_different_block_scope_in_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_two_handlers_capturing_different_block_scope_in_loop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5490 +assertion_line: 5523 expression: output --- ==INPUT== @@ -30,11 +30,11 @@ export default component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,6EAgBZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,8CAgBZ\"}") ============================= test.tsx_test_component_div_div_button_q_e_click_hCFE1Zqizzw.js (ENTRY POINT)== export const test_component_div_div_button_q_e_click_hCFE1Zqizzw = (_, _1, index)=>console.log(index); @@ -102,25 +102,23 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; -const i_JMCQrlWndWA = ()=>import("./test.tsx_test_component_div_div_span_q_e_keydown_JMCQrlWndWA"); -const i_hCFE1Zqizzw = ()=>import("./test.tsx_test_component_div_div_button_q_e_click_hCFE1Zqizzw"); +const _qrl_test_component_div_div_button_q_e_click_hCFE1Zqizzw = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_div_div_button_q_e_click_hCFE1Zqizzw"), "test_component_div_div_button_q_e_click_hCFE1Zqizzw"); +const _qrl_test_component_div_div_span_q_e_keydown_JMCQrlWndWA = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_div_div_span_q_e_keydown_JMCQrlWndWA"), "test_component_div_div_span_q_e_keydown_JMCQrlWndWA"); export const test_component_LUXeXe0DQrg = ()=>{ const arr = useSignal([ 'a', 'b' ]); - const test_component_div_div_button_q_e_click_hCFE1Zqizzw = /*#__PURE__*/ qrl(i_hCFE1Zqizzw, "test_component_div_div_button_q_e_click_hCFE1Zqizzw"); - const test_component_div_div_span_q_e_keydown_JMCQrlWndWA = /*#__PURE__*/ qrl(i_JMCQrlWndWA, "test_component_div_div_span_q_e_keydown_JMCQrlWndWA"); return /*#__PURE__*/ _jsxSorted("div", null, null, arr.value.map((val, i)=>{ const index = i + 1; const label = val.toUpperCase(); return /*#__PURE__*/ _jsxSorted("div", null, null, [ /*#__PURE__*/ _jsxSorted("button", { - "q-e:click": test_component_div_div_button_q_e_click_hCFE1Zqizzw, + "q-e:click": _qrl_test_component_div_div_button_q_e_click_hCFE1Zqizzw, "q:p": index }, null, val, 0, null), /*#__PURE__*/ _jsxSorted("span", { - "q-e:keydown": test_component_div_div_span_q_e_keydown_JMCQrlWndWA, + "q-e:keydown": _qrl_test_component_div_div_span_q_e_keydown_JMCQrlWndWA, "q:p": label }, null, label, 0, null) ], 1, "u6_0"); @@ -128,7 +126,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;0CAG0B;IACxB,MAAM,MAAM,UAAU;QAAC;QAAK;KAAI;;;IAChC,qBACE,WAAC,mBACE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK;QACnB,MAAM,QAAQ,IAAI;QAClB,MAAM,QAAQ,IAAI,WAAW;QAC7B,qBACE,WAAC;0BACC,WAAC;gBAAO,WAAQ;uBAJd;qBAI2C;0BAC7C,WAAC;gBAAK,aAAU;uBAJd;qBAI2C;;IAGnD;AAGN\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;0CAG0B;IACxB,MAAM,MAAM,UAAU;QAAC;QAAK;KAAI;IAChC,qBACE,WAAC,mBACE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK;QACnB,MAAM,QAAQ,IAAI;QAClB,MAAM,QAAQ,IAAI,WAAW;QAC7B,qBACE,WAAC;0BACC,WAAC;gBAAO,WAAQ;uBAJd;qBAI2C;0BAC7C,WAAC;gBAAK,aAAU;uBAJd;qBAI2C;;IAGnD;AAGN\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_work.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_work.snap new file mode 100644 index 00000000000..7e208d6dead --- /dev/null +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_work.snap @@ -0,0 +1,96 @@ +--- +source: packages/qwik/src/optimizer/core/src/test.rs +assertion_line: 6214 +expression: output +--- +==INPUT== + + + import { component$ } from "@qwik.dev/core"; + import { globalAction$ } from "@qwik.dev/router"; + + export const useSecretAction = globalAction$( + async (payload) => console.log(payload) || 'hi' + ); + + export const SecretForm = component$(() => { + const action = useSecretAction(); + return
{action.value}
+ }); + +============================= test.js == + +import { globalActionQrl } from "@qwik.dev/router"; +import { qrl } from "@qwik.dev/core"; +import { componentQrl } from "@qwik.dev/core"; +const _qrl_SecretForm_component_1noi8FsTz7c = /*#__PURE__*/ qrl(()=>import("./test.tsx_SecretForm_component_1noi8FsTz7c"), "SecretForm_component_1noi8FsTz7c"); +const _qrl_useSecretAction_globalAction_Cbn41AEUQ0Q = /*#__PURE__*/ qrl(()=>import("./test.tsx_useSecretAction_globalAction_Cbn41AEUQ0Q"), "useSecretAction_globalAction_Cbn41AEUQ0Q"); +export const useSecretAction = globalActionQrl(_qrl_useSecretAction_globalAction_Cbn41AEUQ0Q); +export const SecretForm = /*#__PURE__*/ componentQrl(_qrl_SecretForm_component_1noi8FsTz7c); + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAIE,OAAO,MAAM,kBAAkB,+DAE7B;AAEF,OAAO,MAAM,2BAAa,oDAGvB\"}") +============================= test.tsx_SecretForm_component_1noi8FsTz7c.js (ENTRY POINT)== + +import { useSecretAction } from "./test"; +import { _jsxSorted } from "@qwik.dev/core"; +import { _wrapProp } from "@qwik.dev/core"; +export const SecretForm_component_1noi8FsTz7c = ()=>{ + const action = useSecretAction(); + return /*#__PURE__*/ _jsxSorted("div", null, null, _wrapProp(action), 3, "u6_0"); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;gDAQuC;IACpC,MAAM,SAAS;IACf,qBAAO,WAAC,6BAAK;AACd\"}") +/* +{ + "origin": "test.tsx", + "name": "SecretForm_component_1noi8FsTz7c", + "entry": null, + "displayName": "test.tsx_SecretForm_component", + "hash": "1noi8FsTz7c", + "canonicalFilename": "test.tsx_SecretForm_component_1noi8FsTz7c", + "path": "", + "extension": "js", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 246, + 330 + ] +} +*/ +============================= test.tsx_useSecretAction_globalAction_Cbn41AEUQ0Q.js (ENTRY POINT)== + +export const useSecretAction_globalAction_Cbn41AEUQ0Q = async (payload)=>console.log(payload) || 'hi'; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"wDAKG,OAAO,UAAY,QAAQ,GAAG,CAAC,YAAY\"}") +/* +{ + "origin": "test.tsx", + "name": "useSecretAction_globalAction_Cbn41AEUQ0Q", + "entry": null, + "displayName": "test.tsx_useSecretAction_globalAction", + "hash": "Cbn41AEUQ0Q", + "canonicalFilename": "test.tsx_useSecretAction_globalAction_Cbn41AEUQ0Q", + "path": "", + "extension": "js", + "parent": null, + "ctxKind": "function", + "ctxName": "globalAction$", + "captures": false, + "loc": [ + 153, + 200 + ], + "paramNames": [ + "payload" + ] +} +*/ +== DIAGNOSTICS == + +[] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_inner_inline_component_prop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_inner_inline_component_prop.snap index f06700c3967..ec8460a4915 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_inner_inline_component_prop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_inner_inline_component_prop.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4088 +assertion_line: 4099 expression: output -snapshot_kind: text --- ==INPUT== @@ -30,11 +29,11 @@ export default component$((props: { id: number }) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,6BAAe,6EAgBR\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,6BAAe,8CAgBR\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_logical_expression_in_template.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_logical_expression_in_template.snap index 41f13b0a144..90abf26e4c3 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_logical_expression_in_template.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_logical_expression_in_template.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4383 +assertion_line: 4393 expression: output --- ==INPUT== @@ -22,11 +22,11 @@ expression: output import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,6EAQZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,8CAQZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { _fnSignal } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_object_with_fn_signal.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_object_with_fn_signal.snap index 3ef92d41df0..747d00b8d05 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_object_with_fn_signal.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_object_with_fn_signal.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4177 +assertion_line: 4187 expression: output --- ==INPUT== @@ -21,11 +21,11 @@ export default component$((props) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,6BAAe,6EAQZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,6BAAe,8CAQZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_prop_from_destructured_array.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_prop_from_destructured_array.snap index 0cdf9de541d..98db97c776f 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_prop_from_destructured_array.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_prop_from_destructured_array.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4119 +assertion_line: 4129 expression: output --- ==INPUT== @@ -57,13 +57,13 @@ expression: output import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_9metqqaxlN8 = ()=>import("./test.tsx_Input_component_9metqqaxlN8"); -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export const Input = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_9metqqaxlN8, "Input_component_9metqqaxlN8")); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_Input_component_9metqqaxlN8 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Input_component_9metqqaxlN8"), "Input_component_9metqqaxlN8"); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export const Input = /*#__PURE__*/ componentQrl(_qrl_Input_component_9metqqaxlN8); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAIE,OAAO,MAAM,sBAAQ,8EAanB;AAEF,6BAAe,6EA2BZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAIE,OAAO,MAAM,sBAAQ,+CAanB;AAEF,6BAAe,8CA2BZ\"}") ============================= test.tsx_test_component_div_button_q_e_click_2TvarUvNGmU.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_store_expression.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_store_expression.snap index 11b641e4bce..2216a707e69 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_store_expression.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_store_expression.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4300 +assertion_line: 4310 expression: output --- ==INPUT== @@ -32,8 +32,8 @@ expression: output import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); export const PANELS = [ 'Examples', 'Input', @@ -42,7 +42,7 @@ export const PANELS = [ ]; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,6EAiBZ;AACH,OAAO,MAAM,SAAwB;IAAC;IAAY;IAAS;IAAU;CAAU,CAAC\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,8CAiBZ;AACH,OAAO,MAAM,SAAwB;IAAC;IAAY;IAAS;IAAU;CAAU,CAAC\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { PANELS } from "./test"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_type_asserted_variables_in_template.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_type_asserted_variables_in_template.snap index 0e37f88b0c3..27485411719 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_type_asserted_variables_in_template.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_type_asserted_variables_in_template.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4360 +assertion_line: 4371 expression: output -snapshot_kind: text --- ==INPUT== @@ -22,11 +21,11 @@ snapshot_kind: text import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_LUXeXe0DQrg = ()=>import("./test.tsx_test_component_LUXeXe0DQrg"); -export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_LUXeXe0DQrg, "test_component_LUXeXe0DQrg")); +const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,6EAOZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGE,6BAAe,8CAOZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { _jsxSorted } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__support_windows_paths.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__support_windows_paths.snap index 846ca56b9b5..cf9e379229a 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__support_windows_paths.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__support_windows_paths.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2061 +assertion_line: 2062 expression: output -snapshot_kind: text --- ==INPUT== @@ -41,11 +40,11 @@ Some("{\"version\":3,\"sources\":[\"C:\\\\users\\\\apps/components/apps/apps.tsx import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_0jjOvx068y0 = ()=>import("./apps.tsx_Greeter_component_0jjOvx068y0"); -export const Greeter = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_0jjOvx068y0, "Greeter_component_0jjOvx068y0")); +const _qrl_Greeter_component_0jjOvx068y0 = /*#__PURE__*/ qrl(()=>import("./apps.tsx_Greeter_component_0jjOvx068y0"), "Greeter_component_0jjOvx068y0"); +export const Greeter = /*#__PURE__*/ componentQrl(_qrl_Greeter_component_0jjOvx068y0); -Some("{\"version\":3,\"sources\":[\"C:\\\\users\\\\apps/components/apps/apps.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,OAAO,MAAM,wBAAU,gFAAwB\"}") +Some("{\"version\":3,\"sources\":[\"C:\\\\users\\\\apps/components/apps/apps.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,OAAO,MAAM,wBAAU,iDAAwB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__ternary_prop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__ternary_prop.snap index 7a73bbb4e63..4c2b0a63f35 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__ternary_prop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__ternary_prop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3878 +assertion_line: 3888 expression: output --- ==INPUT== @@ -102,11 +102,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_4ryKJTOKjWE = ()=>import("./test.tsx_Cmp_component_4ryKJTOKjWE"); -export const Cmp = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_4ryKJTOKjWE, "Cmp_component_4ryKJTOKjWE")); +const _qrl_Cmp_component_4ryKJTOKjWE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Cmp_component_4ryKJTOKjWE"), "Cmp_component_4ryKJTOKjWE"); +export const Cmp = /*#__PURE__*/ componentQrl(_qrl_Cmp_component_4ryKJTOKjWE); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEE,OAAO,MAAM,oBAAM,4EAYhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEE,OAAO,MAAM,oBAAM,6CAYhB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__transform_qrl_in_regular_prop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__transform_qrl_in_regular_prop.snap index c58253c10be..e5e064ac0ff 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__transform_qrl_in_regular_prop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__transform_qrl_in_regular_prop.snap @@ -1,8 +1,7 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3902 +assertion_line: 3913 expression: output -snapshot_kind: text --- ==INPUT== @@ -16,9 +15,9 @@ snapshot_kind: text import { Cmp } from "./test"; import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_iPpdemxi0uE = ()=>import("./test.tsx_Cmp_component_Cmp_foo_iPpdemxi0uE"); +const _qrl_Cmp_component_Cmp_foo_iPpdemxi0uE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Cmp_component_Cmp_foo_iPpdemxi0uE"), "Cmp_component_Cmp_foo_iPpdemxi0uE"); export const Cmp_component_4ryKJTOKjWE = ()=>/*#__PURE__*/ _jsxSorted(Cmp, { - foo: /*#__PURE__*/ qrl(i_iPpdemxi0uE, "Cmp_component_Cmp_foo_iPpdemxi0uE") + foo: _qrl_Cmp_component_Cmp_foo_iPpdemxi0uE }, null, "Hello Qwik", 3, "u6_0"); @@ -73,11 +72,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; -const i_4ryKJTOKjWE = ()=>import("./test.tsx_Cmp_component_4ryKJTOKjWE"); -export const Cmp = /*#__PURE__*/ componentQrl(/*#__PURE__*/ qrl(i_4ryKJTOKjWE, "Cmp_component_4ryKJTOKjWE")); +const _qrl_Cmp_component_4ryKJTOKjWE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Cmp_component_4ryKJTOKjWE"), "Cmp_component_4ryKJTOKjWE"); +export const Cmp = /*#__PURE__*/ componentQrl(_qrl_Cmp_component_4ryKJTOKjWE); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEE,OAAO,MAAM,oBAAM,4EAC4C\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEE,OAAO,MAAM,oBAAM,6CAC4C\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/test.rs b/packages/qwik/src/optimizer/core/src/test.rs index f3ed6cccbd9..5d563fc2760 100644 --- a/packages/qwik/src/optimizer/core/src/test.rs +++ b/packages/qwik/src/optimizer/core/src/test.rs @@ -93,12 +93,12 @@ fn example_1() { code: r#" import { $, component, onRender } from '@qwik.dev/core'; -export const renderHeader = $(() => { +export const renderHeader1 = $(() => { return (
console.log(ctx))}/> ); }); -const renderHeader = component($(() => { +const renderHeader2 = component($(() => { console.log("mount"); return render; })); @@ -3333,6 +3333,16 @@ fn example_qwik_router_inline() { }); } +#[test] +fn example_qwik_router_client() { + test_input!(TestInput { + code: include_str!("fixtures/index.qwik.mjs").to_string(), + filename: "../node_modules/@qwik.dev/router/index.qwik.mjs".to_string(), + explicit_extensions: true, + ..TestInput::default() + }); +} + #[test] fn relative_paths() { let dep = r#" @@ -5800,6 +5810,428 @@ export const Other = component$(() => { }); } +#[test] +fn root_level_self_referential_qrl() { + test_input!(TestInput { + code: r#" +import { component$ } from '@qwik.dev/core'; + +// Root-level self-referential component +// The QRL should NOT be hoisted before the component function is defined +// or should use two-phase emission to avoid forward reference +export const Tree = component$((props) => { + return ( +
+ {props.label} + {props.children && props.children.map((child) => )} +
+ ); +}); +"# + .to_string(), + ..TestInput::default() + }); +} + +#[test] +fn root_level_self_referential_qrl_inline() { + test_input!(TestInput { + code: r#" +import { component$ } from '@qwik.dev/core'; + +// Root-level self-referential component +// The QRL should NOT be hoisted before the component function is defined +// or should use two-phase emission to avoid forward reference +export const Tree = component$((props) => { + return ( +
+ {props.label} + {props.children && props.children.map((child) => )} +
+ ); +}); +"# + .to_string(), + filename: "./node_modules/qwik-tree/index.qwik.jsx".to_string(), + transpile_jsx: true, + is_server: Some(true), + entry_strategy: EntryStrategy::Inline, + mode: EmitMode::Dev, + ..TestInput::default() + }); +} + +#[test] +fn component_level_self_referential_qrl() { + test_input!(TestInput { + code: r#" +import { component$, useAsync$ } from '@qwik.dev/core'; + +// Component-level self-referential component +export const Foo = component$((props) => { + const sig = useAsync$(async ({cleanup}) => { + const timer = setInterval(() => { + sig.value++; + }, 1000); + cleanup(() => clearInterval(timer)); + return 0; + }); + const other = useAsync$(async ({cleanup}) => { + const timer = setInterval(() => { + other.value++; + }, 900); + cleanup(() => clearInterval(timer)); + return 0; + }); + return ( +
+ {other.value} +
+ ); +}); +"# + .to_string(), + ..TestInput::default() + }); +} + +#[test] +fn example_self_referential_component_migration() { + test_input!(TestInput { + code: r#" +import { component$ } from '@qwik.dev/core'; + +// Self-referential component: the Nested component references itself in its JSX +// This should be migrated to its segment using two-phase emission (let + assign) +// to avoid Temporal Dead Zone errors +export const Nested = component$(() => { + return ( +
+ +
+ ); +}); + +// Another self-referential component with conditional rendering +export const RecursiveList = component$((props) => { + if (props.depth === 0) return
End
; + return ( +
+ Level {props.depth} + +
+ ); +}); + +// Mutually recursive components: A references B, B references A +const ComponentA = component$(() => { + return ( +
+ A + +
+ ); +}); + +const ComponentB = component$(() => { + return ( +
+ B + +
+ ); +}); + +export const MutualExample = component$(() => { + return ; +}); +"# + .to_string(), + snapshot: true, + transpile_jsx: true, + ..TestInput::default() + }); +} + +// Non-snapshot tests for robust import resolution +#[test] +fn import_collision_with_renaming() { + // Test that imports are correctly resolved from global context without fallback + // This verifies the fix for SyntaxContext mismatch issues + let res = test_input!(TestInput { + code: r#" +import { component$ } from '@qwik.dev/core'; + +export const Test = component$(() => { + return
Test
; +}); +"# + .to_string(), + snapshot: false, + ..TestInput::default() + }); + + assert!( + res.is_ok(), + "Transform should succeed without fallback errors" + ); + let output = res.unwrap(); + + // Verify the entry module was created + let entry = output.modules.iter().find(|m| m.is_entry); + assert!(entry.is_some(), "Should have entry module"); + + // Verify output modules contain generated code + assert!( + !output.modules.is_empty(), + "Should generate at least one module" + ); +} + +#[test] +fn explicit_imports_for_dev_qrls() { + // Test that dev mode transform succeeds with explicit imports for hoisted items + let res = test_input!(TestInput { + code: r#" +import { component$ } from '@qwik.dev/core'; + +export const Test = component$(() => { + const items = [1, 2, 3]; + return ( +
+ {items.map(item =>
{item}
)} +
+ ); +}); +"# + .to_string(), + mode: EmitMode::Dev, + snapshot: false, + ..TestInput::default() + }); + + assert!(res.is_ok(), "Transform should succeed in dev mode"); + let output = res.unwrap(); + + // Verify all modules have valid import structure + for module in &output.modules { + // Each module's code should be valid (contain component or segment code) + assert!( + !module.code.is_empty(), + "Module {} should have code", + module.path + ); + } +} + +#[test] +fn inlined_qrl_uses_identifier_reference_when_hoisted() { + let res = test_input!(TestInput { + code: r#" +import { component$ } from '@qwik.dev/core'; + +export const App = component$(() => { + return
Hello
; +}); +"# + .to_string(), + entry_strategy: EntryStrategy::Hoist, + transpile_ts: true, + transpile_jsx: true, + snapshot: false, + ..TestInput::default() + }); + + assert!(res.is_ok(), "Transform should succeed"); + let output = res.unwrap(); + + let combined_code = output + .modules + .iter() + .map(|module| module.code.as_str()) + .collect::>() + .join("\n"); + let compact_code: String = combined_code + .chars() + .filter(|c| !c.is_whitespace()) + .collect(); + + assert!( + compact_code.contains("inlinedQrl(App_component_"), + "Expected inlinedQrl to reference a hoisted identifier (inlinedQrl(App_component_...)).\nGenerated code:\n{}", + combined_code + ); + assert!( + !compact_code.contains("inlinedQrl(("), + "Expected inlinedQrl first arg to be an identifier reference, not an embedded function.\nGenerated code:\n{}", + combined_code + ); +} + +#[test] +fn inlined_qrl_uses_identifier_reference_when_hoisted_snapshot() { + test_input!(TestInput { + code: r#" +import { component$ } from '@qwik.dev/core'; + +export const App = component$(() => { + return
Hello
; +}); +"# + .to_string(), + entry_strategy: EntryStrategy::Hoist, + transpile_ts: true, + transpile_jsx: true, + snapshot: true, + ..TestInput::default() + }); +} + +#[test] +fn inlined_qrl_after_ref_identifiers_forward_ref() { + // Test that inlinedQrl items are moved to come AFTER their referenced identifiers + // even in cases where they might initially appear before them (e.g., third-party libs) + let res = test_input!(TestInput { + code: r#" +import { component$ } from '@qwik.dev/core'; +import { useAsyncQrl } from '@qwik.dev/core'; + +export const TestComponent = component$(() => { + // This should be hoisted with an identifier + const asyncSig = useAsyncQrl$(async () => { + return 42; + }); + return
{asyncSig}
; +}); +"# + .to_string(), + entry_strategy: EntryStrategy::Hoist, + transpile_ts: true, + transpile_jsx: true, + snapshot: false, + ..TestInput::default() + }); + + assert!(res.is_ok(), "Transform should succeed"); + let output = res.unwrap(); + + let combined_code = output + .modules + .iter() + .map(|module| module.code.as_str()) + .collect::>() + .join("\n"); + + // Verify that inlinedQrl uses an identifier reference + let compact_code: String = combined_code + .chars() + .filter(|c| !c.is_whitespace()) + .collect(); + + assert!( + compact_code.contains("inlinedQrl(TestComponent_component_") + || compact_code.contains("inlinedQrlDEV(TestComponent_component_"), + "Expected inlinedQrl to reference the hoisted component identifier.\nGenerated code:\n{}", + combined_code + ); +} + +// Non-snapshot tests for generalized q:p/q:ps +#[test] +fn loop_iteration_vars_with_params() { + // Test that loop iteration variables with event handlers work correctly + let res = test_input!(TestInput { + code: r#" +import { component$ } from '@qwik.dev/core'; + +export const Test = component$(() => { + return ( +
+ {['a', 'b', 'c'].map((item, index) => ( + + ))} +
+ ); +}); +"# + .to_string(), + snapshot: false, + ..TestInput::default() + }); + + assert!( + res.is_ok(), + "Transform should succeed for loop with handlers" + ); + let output = res.unwrap(); + + // Verify modules were generated + assert!(!output.modules.is_empty(), "Should have generated modules"); + + // The transform should produce valid output without errors + let entry_module = output.modules.iter().find(|m| m.is_entry); + assert!(entry_module.is_some(), "Should have entry module"); +} + +#[test] +fn import_resolution_without_fallback() { + // Test that imports are resolved correctly from explicit_imports without symbol-only fallbacks + let res = test_input!(TestInput { + code: r#" +import { signal, component$ } from '@qwik.dev/core'; + +export const Test = component$(() => { + const sig = signal(0); + return
{sig}
; +}); +"# + .to_string(), + snapshot: false, + ..TestInput::default() + }); + + assert!( + res.is_ok(), + "Transform should succeed with proper import resolution" + ); + let output = res.unwrap(); + + // Verify all generated modules are valid + for module in &output.modules { + assert!( + !module.code.is_empty(), + "Module {} should have code", + module.path + ); + // Should not have symbol-only import mismatches that cause no-op fallbacks + } +} + +#[test] +fn should_work() { + test_input!(TestInput { + code: r#" + import { component$ } from "@qwik.dev/core"; + import { globalAction$ } from "@qwik.dev/router"; + + export const useSecretAction = globalAction$( + async (payload) => console.log(payload) || 'hi' + ); + + export const SecretForm = component$(() => { + const action = useSecretAction(); + return
{action.value}
+ }); + "# + .to_string(), + transpile_ts: true, + transpile_jsx: true, + ..TestInput::default() + }); +} + impl TestInput { pub fn default() -> Self { Self { diff --git a/packages/qwik/src/optimizer/core/src/transform.rs b/packages/qwik/src/optimizer/core/src/transform.rs index 4b51406d725..34dd44fff40 100644 --- a/packages/qwik/src/optimizer/core/src/transform.rs +++ b/packages/qwik/src/optimizer/core/src/transform.rs @@ -132,6 +132,9 @@ pub struct QwikTransform<'a> { /// Depths that are component boundaries (not loop callbacks). Used to hoist QRLs with captures to the current component's top. component_depths: Vec, in_callback: bool, + /// Stores post-fold const initializers for inlining into segments when + /// a $ call receives a simple identifier referencing a local const. + const_initializers: HashMap>, } pub struct QwikTransformOptions<'a> { @@ -172,7 +175,7 @@ impl<'a> QwikTransform<'a> { } } - for id in options.global_collect.exports.keys() { + for id in options.global_collect.export_local_ids() { if id.0.ends_with(QRL_SUFFIX) { marker_functions.insert(id.clone(), id.0.clone()); } @@ -279,6 +282,7 @@ impl<'a> QwikTransform<'a> { hoisting_scope_decl_indices: Vec::new(), component_depths: Vec::new(), in_callback: false, + const_initializers: HashMap::new(), options, } } @@ -468,10 +472,10 @@ impl<'a> QwikTransform<'a> { let should_emit = self.should_emit_segment(&segment_data); if should_emit { for id in &segment_data.local_idents { - if !self.options.global_collect.exports.contains_key(id) - && self.options.global_collect.root.contains_key(id) - { - self.ensure_export(id); + // Check if root-defined; if so, ensure it's exported so segments can import it. + // Imported symbols don't need re-exporting — segments import them from the original source. + if let Some(root_id) = self.options.global_collect.root_id_for_symbol(&id.0) { + self.ensure_export(&root_id); } } } @@ -669,6 +673,19 @@ impl<'a> QwikTransform<'a> { ctx_name: Atom, custom_symbol: Option, ) -> (ast::CallExpr, bool) { + // Inline const initializer if first_arg is a simple ident referencing a local const. + // This fixes cases like `const style = \`${css1}${css2}\`; useStyles$(style);` + // where the segment would otherwise get an undefined identifier. + let first_arg = if let ast::Expr::Ident(ref ident) = first_arg { + if let Some(init) = self.const_initializers.get(&id!(ident)) { + *init.clone() + } else { + first_arg + } + } else { + first_arg + }; + let can_capture = can_capture_scope(&first_arg); let first_arg_span = first_arg.span(); @@ -737,9 +754,9 @@ impl<'a> QwikTransform<'a> { let should_emit = self.should_emit_segment(&segment_data); if should_emit { for id in &segment_data.local_idents { - if !self.options.global_collect.exports.contains_key(id) { - if self.options.global_collect.root.contains_key(id) { - self.ensure_export(id); + if !self.options.global_collect.has_export_symbol(&id.0) { + if let Some(root_id) = self.options.global_collect.root_id_for_symbol(&id.0) { + self.ensure_export(&root_id); } if invalid_decl.iter().any(|entry| entry.0 == *id) { HANDLER.with(|handler| { @@ -797,7 +814,16 @@ impl<'a> QwikTransform<'a> { let use_h = collector.use_h; let use_fragment = collector.use_fragment; + // Collect identifiers declared locally within this expression + // This prevents shadowed names (like currentScrollState in spa-init.ts) + // from being treated as external dependencies + let mut locally_declared = HashSet::new(); + collect_local_declarations_from_expr(expr, &mut locally_declared); + let mut idents = collector.get_words(); + // Filter out locally-declared identifiers + idents.retain(|id| !locally_declared.contains(id)); + if use_h { if let Some(id) = &self.h_fn { idents.push(id.clone()); @@ -944,11 +970,11 @@ impl<'a> QwikTransform<'a> { } else { SegmentKind::JSXProp }; + let qrl = self.create_synthetic_qsegment(*expr, segment_kind, ctx_name, None); + let hoisted = self.hoist_qrl_to_module_scope_if_no_captures(qrl); Some(ast::JSXAttrValue::JSXExprContainer(ast::JSXExprContainer { span: DUMMY_SP, - expr: ast::JSXExpr::Expr(Box::new(ast::Expr::Call( - self.create_synthetic_qsegment(*expr, segment_kind, ctx_name, None), - ))), + expr: ast::JSXExpr::Expr(Box::new(hoisted)), })) } else { Some(ast::JSXAttrValue::JSXExprContainer(ast::JSXExprContainer { @@ -975,14 +1001,17 @@ impl<'a> QwikTransform<'a> { } fn ensure_export(&mut self, id: &Id) { - let exported_name: Option = Some(format!("_auto_{}", id.0).into()); + let canonical_id = self.options.global_collect.canonical_id_for(id); + let exported_name: Option = Some(format!("_auto_{}", canonical_id.0).into()); if self .options .global_collect - .add_export(id.clone(), exported_name.clone()) + .add_export(canonical_id.clone(), exported_name.clone()) { - self.extra_bottom_items - .insert(id.clone(), create_synthetic_named_export(id, exported_name)); + self.extra_bottom_items.insert( + canonical_id.clone(), + create_synthetic_named_export(&canonical_id, exported_name), + ); } } @@ -1050,6 +1079,13 @@ impl<'a> QwikTransform<'a> { /// Hoist QRL creation if inside a loop, or return the call expression as-is fn hoist_qrl_if_needed(&mut self, converted_expr: ast::CallExpr, is_fn: bool) -> ast::Expr { + let module_hoisted = self.hoist_qrl_to_module_scope_if_no_captures(converted_expr); + let converted_expr = match module_hoisted { + ast::Expr::Call(call_expr) => call_expr, + expr => { + return expr; + } + }; // Hoist QRLs only when inside a loop (for, while, .map(), etc.) // This creates a single QRL declaration outside the loop for efficiency // Don't hoist component$ QRLs (is_fn = true) @@ -1119,6 +1155,69 @@ impl<'a> QwikTransform<'a> { } } + fn hoist_qrl_to_module_scope_if_no_captures(&mut self, call_expr: ast::CallExpr) -> ast::Expr { + let mut call_expr = call_expr; + let has_capture_array = call_expr + .args + .iter() + .any(|arg| matches!(&*arg.expr, ast::Expr::Array(_))); + if has_capture_array { + return ast::Expr::Call(call_expr); + } + let is_inlined_qrl = + if let ast::Callee::Expr(box ast::Expr::Ident(ref ident)) = call_expr.callee { + ident.sym == *_INLINED_QRL || ident.sym == *_INLINED_QRL_DEV + } else { + false + }; + + if is_inlined_qrl { + if let Some(first_arg) = call_expr.args.first() { + if matches!(&*first_arg.expr, ast::Expr::Ident(_)) { + return ast::Expr::Call(call_expr); + } + } + } + + if let Some(comments) = self.options.comments { + let span = Span::dummy_with_cmt(); + comments.add_pure_comment(span.lo); + call_expr.span = span; + } + + let symbol_name = call_expr + .args + .get(1) + .and_then(|arg| match &*arg.expr { + ast::Expr::Lit(ast::Lit::Str(s)) => Some(s.value.to_string()), + _ => None, + }) + .unwrap_or_else(|| format!("qrl_{}", call_expr.span.lo.0)); + let ident_name = Atom::from(format!("_qrl_{}", symbol_name)); + let id: Id = (ident_name, SyntaxContext::empty()); + + if !self.extra_top_items.contains_key(&id) { + let declarator = ast::VarDeclarator { + span: DUMMY_SP, + name: ast::Pat::Ident(ast::BindingIdent::from(new_ident_from_id(&id))), + init: Some(Box::new(ast::Expr::Call(call_expr))), + definite: false, + }; + self.extra_top_items.insert( + id.clone(), + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(Box::new(ast::VarDecl { + span: DUMMY_SP, + kind: ast::VarDeclKind::Const, + declare: false, + ctxt: SyntaxContext::empty(), + decls: vec![declarator], + })))), + ); + } + + ast::Expr::Ident(new_ident_from_id(&id)) + } + /// Helper function to merge an event handler with an existing one in the props list. /// If a handler with the same key already exists, they are merged into an array. /// Otherwise, the new handler is simply added. @@ -1344,8 +1443,6 @@ impl<'a> QwikTransform<'a> { segment_data: &SegmentData, span: &Span, ) -> ast::CallExpr { - // Put the QRL import function in module scope - let import_fn_name = private_ident!(format!("i_{}", segment_data.hash)); let import_fn = ast::Expr::Arrow(ast::ArrowExpr { body: Box::new(ast::BlockStmtOrExpr::Expr(Box::new(ast::Expr::Call( ast::CallExpr { @@ -1367,23 +1464,33 @@ impl<'a> QwikTransform<'a> { )))), ..Default::default() }); - self.extra_top_items.insert( - id!(import_fn_name), - ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(Box::new(ast::VarDecl { - kind: ast::VarDeclKind::Const, - decls: vec![ast::VarDeclarator { - name: ast::Pat::Ident(ast::BindingIdent::from(import_fn_name.clone())), - init: Some(Box::new(import_fn)), - definite: false, - span: DUMMY_SP, - }], - ..Default::default() - })))), - ); - // Create the qrl arguments + // When there are captures, the qrl() call stays in a function body, + // so keep the import function as a separate module-level const to avoid + // recreating it on every call. When no captures, the qrl() call itself + // gets hoisted to module scope, so we can inline the import arrow. + let import_arg = if segment_data.scoped_idents.is_empty() { + import_fn + } else { + let import_fn_name = private_ident!(format!("i_{}", segment_data.hash)); + self.extra_top_items.insert( + id!(import_fn_name), + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(Box::new(ast::VarDecl { + kind: ast::VarDeclKind::Const, + decls: vec![ast::VarDeclarator { + name: ast::Pat::Ident(ast::BindingIdent::from(import_fn_name.clone())), + init: Some(Box::new(import_fn)), + definite: false, + span: DUMMY_SP, + }], + ..Default::default() + })))), + ); + ast::Expr::Ident(import_fn_name) + }; + let mut args = vec![ - ast::Expr::Ident(import_fn_name), + import_arg, ast::Expr::Lit(ast::Lit::Str(ast::Str { span: DUMMY_SP, value: symbol.into(), @@ -1436,7 +1543,38 @@ impl<'a> QwikTransform<'a> { || matches!(expr, ast::Expr::Ident(_)); let param_names = Self::extract_param_names(&expr); let inlined_expr = if should_inline { - expr + match expr { + ast::Expr::Ident(_) | ast::Expr::Lit(ast::Lit::Null(_)) => expr, + other_expr => { + let lifted_id: Id = (symbol_name.clone(), SyntaxContext::empty()); + + if !self.extra_top_items.contains_key(&lifted_id) { + let declarator = ast::VarDeclarator { + span: DUMMY_SP, + name: ast::Pat::Ident(ast::BindingIdent::from(new_ident_from_id( + &lifted_id, + ))), + init: Some(Box::new(other_expr)), + definite: false, + }; + + self.extra_top_items.insert( + lifted_id.clone(), + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(Box::new( + ast::VarDecl { + span: DUMMY_SP, + kind: ast::VarDeclKind::Const, + declare: false, + ctxt: SyntaxContext::empty(), + decls: vec![declarator], + }, + )))), + ); + } + + ast::Expr::Ident(new_ident_from_id(&lifted_id)) + } + } } else { let new_ident = private_ident!(symbol_name.clone()); self.segments.push(Segment { @@ -1662,12 +1800,48 @@ impl<'a> QwikTransform<'a> { let mut static_subtree = !has_spread_props; let mut added_iter_var_prop = false; // Track if we've already added q:p or q:ps - // Collect all iteration variables used by any handler on this element (in loop order) - let element_iter_vars: Vec = if !self.iteration_var_stack.is_empty() - && !is_fn - { - if let Some(iter_vars) = self.iteration_var_stack.last() { - let mut used_syms: HashSet<(Atom, SyntaxContext)> = HashSet::new(); + // Collect parameters to lift via q:p/q:ps: + // Priority 1: iteration variables (loop context) - collected from iteration_var_stack + // Priority 2: extra inline handler params (beyond event, element) - collected from handler signatures + let element_lifted_params: Vec = if !is_fn { + // Check if we're in a loop context + if !self.iteration_var_stack.is_empty() { + // Use iteration variables (existing loop behavior) + if let Some(iter_vars) = self.iteration_var_stack.last() { + let mut used_syms: HashSet<(Atom, SyntaxContext)> = HashSet::new(); + for prop in props.iter() { + if let ast::PropOrSpread::Prop(box ast::Prop::KeyValue(ref node)) = + prop + { + let key = match &node.key { + ast::PropName::Ident(ref ident) => Some(ident.sym.clone()), + ast::PropName::Str(ref s) => Some(s.value.clone()), + _ => None, + }; + if key.as_ref().and_then(convert_qrl_word).is_some() + && matches!( + *node.value, + ast::Expr::Arrow(_) | ast::Expr::Fn(_) + ) { + for var in iter_vars { + if expr_uses_ident(&node.value, &id!(var)) { + used_syms.insert((var.sym.clone(), var.ctxt)); + } + } + } + } + } + iter_vars + .iter() + .filter(|var| used_syms.contains(&(var.sym.clone(), var.ctxt))) + .cloned() + .collect() + } else { + Vec::new() + } + } else { + // No loop context - collect extra params from inline event handlers (params beyond event, element) + let mut collected_params: Vec = Vec::new(); for prop in props.iter() { if let ast::PropOrSpread::Prop(box ast::Prop::KeyValue(ref node)) = prop { @@ -1676,24 +1850,42 @@ impl<'a> QwikTransform<'a> { ast::PropName::Str(ref s) => Some(s.value.clone()), _ => None, }; - if key.as_ref().and_then(convert_qrl_word).is_some() - && matches!(*node.value, ast::Expr::Arrow(_) | ast::Expr::Fn(_)) - { - for var in iter_vars { - if expr_uses_ident(&node.value, &id!(var)) { - used_syms.insert((var.sym.clone(), var.ctxt)); + if key.as_ref().and_then(convert_qrl_word).is_some() { + match &*node.value { + ast::Expr::Arrow(ref arrow) if arrow.params.len() > 2 => { + // Extract params beyond index 2 (event, element) + for param in &arrow.params[2..] { + if let ast::Pat::Ident(ref ident) = param { + if !collected_params.iter().any(|p| { + p.sym == ident.id.sym + && p.ctxt == ident.id.ctxt + }) { + collected_params.push(ident.id.clone()); + } + } + } + } + ast::Expr::Fn(ref fn_expr) + if fn_expr.function.params.len() > 2 => + { + // Extract params beyond index 2 + for param in &fn_expr.function.params[2..] { + if let ast::Pat::Ident(ref ident) = param.pat { + if !collected_params.iter().any(|p| { + p.sym == ident.id.sym + && p.ctxt == ident.id.ctxt + }) { + collected_params.push(ident.id.clone()); + } + } + } } + _ => {} } } } } - iter_vars - .iter() - .filter(|var| used_syms.contains(&(var.sym.clone(), var.ctxt))) - .cloned() - .collect() - } else { - Vec::new() + collected_params } } else { Vec::new() @@ -1809,12 +2001,43 @@ impl<'a> QwikTransform<'a> { { if matches!(*node.value, ast::Expr::Arrow(_) | ast::Expr::Fn(_)) { - // Transform event handler with element's full iteration var list (so param order matches q:ps) - let transformed_value = if !element_iter_vars.is_empty() { - transform_event_handler_with_iter_var( - *node.value.clone(), - &element_iter_vars, - ) + // Determine which params to lift: + // 1. For loop context: use iteration variables (existing behavior) + // 2. For non-loop context: use explicit handler params (generalization) + let params_to_lift: Vec = + if !self.iteration_var_stack.is_empty() + && !element_lifted_params.is_empty() + { + // Loop-based: use iteration vars as params + element_lifted_params.clone() + } else if !is_fn { + // Non-loop inline handler on string component: extract explicit params + if let Some((handler_idents, _handler_names)) = + extract_inline_handler_params(&node.value) + { + get_liftable_inline_handler_params( + &handler_idents, + &_handler_names, + ) + } else { + Vec::new() + } + } else { + Vec::new() + }; + + // Transform handler if we have params to lift + let transformed_value = if !params_to_lift.is_empty() { + if !self.iteration_var_stack.is_empty() { + // Loop context: inject iteration vars as params + transform_event_handler_with_iter_var( + *node.value.clone(), + ¶ms_to_lift, + ) + } else { + // Non-loop context: params already declared, just use as-is + *node.value.clone() + } } else { *node.value.clone() }; @@ -1853,18 +2076,18 @@ impl<'a> QwikTransform<'a> { &mut const_props, ); - // Add q:p (single) or q:ps (multiple) prop for all iteration vars used on this element - // Only add it once per element, even if multiple handlers use different iteration variables - if !element_iter_vars.is_empty() + // Add q:p (single) or q:ps (multiple) prop for lifted params + // Apply to both loop-based iteration vars AND non-loop inline handler params + if !params_to_lift.is_empty() && !is_fn && !added_iter_var_prop { let (prop_name, row_value): (&str, Box) = - if element_iter_vars.len() == 1 { + if params_to_lift.len() == 1 { // Single parameter: use q:p without array ( "q:p", Box::new(ast::Expr::Ident( - element_iter_vars[0].clone(), + params_to_lift[0].clone(), )), ) } else { @@ -1873,7 +2096,7 @@ impl<'a> QwikTransform<'a> { "q:ps", Box::new(ast::Expr::Array(ast::ArrayLit { span: DUMMY_SP, - elems: element_iter_vars + elems: params_to_lift .iter() .map(|ident| { Some(ast::ExprOrSpread { @@ -2692,7 +2915,7 @@ impl<'a> Fold for QwikTransform<'a> { fn fold_module(&mut self, node: ast::Module) -> ast::Module { let mut body = Vec::with_capacity(node.body.len() + 10); - let mut module_body = node + let module_body: Vec<_> = node .body .into_iter() .flat_map(|i| { @@ -2739,8 +2962,61 @@ impl<'a> Fold for QwikTransform<'a> { create_synthetic_named_import(new_local, &import.source) }), ); - body.extend(self.extra_top_items.values().cloned()); - body.append(&mut module_body); + let extra_top_items = collect_needed_extra_top_items( + &self.extra_top_items, + &module_body, + &self.extra_bottom_items, + ); + + // Separate imports from non-imports to ensure all imports stay at the top + let (extra_imports, extra_non_imports): (Vec<_>, Vec<_>) = + extra_top_items.into_iter().partition(|item| { + matches!( + item, + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::Import(_)) + ) + }); + + let (module_imports, module_non_imports): (Vec<_>, Vec<_>) = + module_body.into_iter().partition(|item| { + matches!( + item, + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::Import(_)) + ) + }); + + // Assemble in proper order: all imports first, then non-imports + body.extend(extra_imports); + body.extend(module_imports); + let non_imports = order_items_by_dependency( + extra_non_imports + .into_iter() + .chain(module_non_imports) + .collect(), + ); + + // Deduplicate declarations by symbol name before adding to body + // Use symbol name (Atom) for comparison since SyntaxContext can vary across transformations + let mut seen_syms: HashSet = HashSet::new(); + let deduplicated_non_imports: Vec = non_imports + .into_iter() + .filter(|item| { + let mut item_defined_idents = HashSet::new(); + collect_declared_idents(item, &mut item_defined_idents); + + let is_duplicate = item_defined_idents + .iter() + .any(|id| seen_syms.contains(&id.0)); + if !is_duplicate { + seen_syms.extend(item_defined_idents.iter().map(|id| id.0.clone())); + true + } else { + false + } + }) + .collect(); + + body.extend(deduplicated_non_imports); body.extend(self.extra_bottom_items.values().cloned()); ast::Module { body, ..node } @@ -2763,7 +3039,26 @@ impl<'a> Fold for QwikTransform<'a> { } } } - node.fold_children_with(self) + let is_const = node.kind == ast::VarDeclKind::Const; + let folded = node.fold_children_with(self); + + // Store post-fold const initializers for potential inlining into segments. + // When a $ call receives a simple identifier (e.g. useStyles$(style)), + // we can replace it with the actual initializer expression. + if is_const { + for decl in &folded.decls { + if let ast::Pat::Ident(ident) = &decl.name { + if let Some(init) = &decl.init { + // Skip simple Ident inits (e.g. hoisted QRL references like _qrl_...) + if !matches!(**init, ast::Expr::Ident(_)) { + self.const_initializers.insert(id!(ident.id), init.clone()); + } + } + } + } + } + + folded } fn fold_var_declarator(&mut self, node: ast::VarDeclarator) -> ast::VarDeclarator { @@ -3332,8 +3627,7 @@ impl<'a> Fold for QwikTransform<'a> { convert_qrl_word(&ident.sym).expect("Specifier ends with $"); global_collect .exports - .keys() - .find(|id| id.0 == new_specifier) + .get(&new_specifier) .map_or_else( || { HANDLER.with(|handler| { @@ -3346,8 +3640,9 @@ impl<'a> Fold for QwikTransform<'a> { .emit(); }); }, - |new_local| { - replace_callee = Some(new_ident_from_id(new_local).as_callee()); + |export_info| { + replace_callee = + Some(new_ident_from_id(&export_info.local_id).as_callee()); }, ); } @@ -3370,14 +3665,15 @@ impl<'a> Fold for QwikTransform<'a> { .enumerate() .map(|(i, arg)| { if convert_qrl && i == 0 { + let qrl = self.create_synthetic_qsegment( + *arg.expr, + SegmentKind::Function, + ctx_name.clone(), + None, + ); + let hoisted = self.hoist_qrl_to_module_scope_if_no_captures(qrl); ast::ExprOrSpread { - expr: Box::new(ast::Expr::Call(self.create_synthetic_qsegment( - *arg.expr, - SegmentKind::Function, - ctx_name.clone(), - None, - ))) - .fold_with(self), + expr: Box::new(hoisted.fold_with(self)), ..arg } } else { @@ -3404,6 +3700,374 @@ impl<'a> Fold for QwikTransform<'a> { } } +fn collect_needed_extra_top_items( + extra_top_items: &BTreeMap, + module_body: &[ast::ModuleItem], + extra_bottom_items: &BTreeMap, +) -> Vec { + if extra_top_items.is_empty() { + return Vec::new(); + } + + let mut needed: HashSet = HashSet::new(); + for item in module_body { + collect_module_item_idents(item, &mut needed); + } + for item in extra_bottom_items.values() { + collect_module_item_idents(item, &mut needed); + } + let mut needed_syms: HashSet = needed.iter().map(|id| id.0.clone()).collect(); + + let mut included: HashSet = HashSet::new(); + let mut changed = true; + while changed { + changed = false; + for (id, item) in extra_top_items.iter() { + if (needed.contains(id) || needed_syms.contains(&id.0)) && included.insert(id.clone()) { + let mut item_used = HashSet::new(); + collect_module_item_idents(item, &mut item_used); + for used in item_used { + if needed.insert(used.clone()) { + needed_syms.insert(used.0.clone()); + changed = true; + } + } + } + } + } + + let mut result: Vec<_> = extra_top_items + .iter() + .filter(|&(id, _)| included.contains(id)) + .map(|(_, item)| item.clone()) + .collect(); + + // Sort by source position to preserve original declaration order + result.sort_by_key(|item| match item { + ast::ModuleItem::Stmt(stmt) => stmt.span().lo, + ast::ModuleItem::ModuleDecl(decl) => match decl { + ast::ModuleDecl::Import(d) => d.span.lo, + ast::ModuleDecl::ExportDecl(d) => d.span.lo, + ast::ModuleDecl::ExportNamed(d) => d.span.lo, + ast::ModuleDecl::ExportDefaultDecl(d) => d.span.lo, + ast::ModuleDecl::ExportDefaultExpr(d) => d.span.lo, + ast::ModuleDecl::ExportAll(d) => d.span.lo, + ast::ModuleDecl::TsImportEquals(d) => d.span.lo, + ast::ModuleDecl::TsExportAssignment(d) => d.span.lo, + ast::ModuleDecl::TsNamespaceExport(d) => d.span.lo, + }, + }); + + result +} + +fn collect_module_item_idents(item: &ast::ModuleItem, out: &mut HashSet) { + let mut collector = AnyIdentCollector::new(); + item.visit_with(&mut collector); + out.extend(collector.local_idents); +} + +fn order_items_by_dependency(items: Vec) -> Vec { + if items.len() < 2 { + return items; + } + + let mut defines_by_item: Vec> = Vec::with_capacity(items.len()); + for item in items.iter() { + let mut defines = HashSet::new(); + collect_declared_idents(item, &mut defines); + defines_by_item.push(defines); + } + + let mut deps_by_item: Vec> = vec![HashSet::new(); items.len()]; + for (idx, item) in items.iter().enumerate() { + let mut used = HashSet::new(); + collect_module_item_idents(item, &mut used); + for id in &defines_by_item[idx] { + used.remove(id); + } + for used_id in used { + let def_idx_opt = defines_by_item + .iter() + .enumerate() + .find_map(|(def_idx, defs)| { + if def_idx != idx && defs.iter().any(|def_id| def_id.0 == used_id.0) { + Some(def_idx) + } else { + None + } + }); + + if let Some(def_idx) = def_idx_opt { + deps_by_item[idx].insert(def_idx); + } + } + } + + let mut in_degree = vec![0usize; items.len()]; + let mut dependents: Vec> = vec![Vec::new(); items.len()]; + for (idx, deps) in deps_by_item.iter().enumerate() { + in_degree[idx] = deps.len(); + for dep_idx in deps { + dependents[*dep_idx].push(idx); + } + } + + let mut ready: Vec = (0..items.len()).filter(|i| in_degree[*i] == 0).collect(); + ready.sort_unstable(); + let mut ordered: Vec = Vec::with_capacity(items.len()); + while let Some(idx) = ready.first().copied() { + ready.remove(0); + ordered.push(idx); + for dependent in &dependents[idx] { + in_degree[*dependent] = in_degree[*dependent].saturating_sub(1); + if in_degree[*dependent] == 0 { + ready.push(*dependent); + } + } + ready.sort_unstable(); + } + + if ordered.len() < items.len() { + let mut seen = vec![false; items.len()]; + for idx in &ordered { + seen[*idx] = true; + } + for (i, _) in seen.iter().enumerate() { + if !seen[i] { + ordered.push(i); + } + } + } + + ordered.into_iter().map(|idx| items[idx].clone()).collect() +} + +fn collect_declared_idents(item: &ast::ModuleItem, out: &mut HashSet) { + match item { + ast::ModuleItem::Stmt(ast::Stmt::Decl(decl)) => { + collect_declared_idents_from_decl(decl, out) + } + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::ExportDecl(decl)) => { + collect_declared_idents_from_decl(&decl.decl, out); + } + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::ExportDefaultDecl(decl)) => { + if let ast::DefaultDecl::Fn(fn_decl) = &decl.decl { + if let Some(ident) = &fn_decl.ident { + out.insert(id!(ident)); + } + } + if let ast::DefaultDecl::Class(class_decl) = &decl.decl { + if let Some(ident) = &class_decl.ident { + out.insert(id!(ident)); + } + } + } + _ => {} + } +} + +fn collect_declared_idents_from_decl(decl: &ast::Decl, out: &mut HashSet) { + match decl { + ast::Decl::Var(var) => { + for decl in &var.decls { + let mut identifiers: Vec<(Id, Span)> = Vec::new(); + collect_from_pat(&decl.name, &mut identifiers); + out.extend(identifiers.into_iter().map(|(id, _)| id)); + } + } + ast::Decl::Fn(func) => { + out.insert(id!(func.ident)); + } + ast::Decl::Class(class) => { + out.insert(id!(class.ident)); + } + _ => {} + } +} + +/// Collects identifiers declared locally within an expression (arrow functions, function expressions, etc.) +/// This is used to filter out shadowed names from external dependency collection. +fn collect_local_declarations_from_expr(expr: &ast::Expr, out: &mut HashSet) { + match expr { + ast::Expr::Arrow(arrow) => { + // Collect parameter names + for param in &arrow.params { + let mut identifiers: Vec<(Id, Span)> = Vec::new(); + collect_from_pat(param, &mut identifiers); + out.extend(identifiers.into_iter().map(|(id, _)| id)); + } + // Collect declarations from body if it's a block + if let ast::BlockStmtOrExpr::BlockStmt(block) = &*arrow.body { + collect_block_declarations(block, out); + } + } + ast::Expr::Fn(func) => { + // Collect function name if present + if let Some(ident) = &func.ident { + out.insert(id!(ident)); + } + // Collect parameter names + for param in &func.function.params { + let mut identifiers: Vec<(Id, Span)> = Vec::new(); + collect_from_pat(¶m.pat, &mut identifiers); + out.extend(identifiers.into_iter().map(|(id, _)| id)); + } + // Collect declarations from body + if let Some(body) = &func.function.body { + collect_block_declarations(body, out); + } + } + _ => {} + } +} + +/// Collects variable and function declarations from a block statement +fn collect_block_declarations(block: &ast::BlockStmt, out: &mut HashSet) { + for stmt in &block.stmts { + match stmt { + ast::Stmt::Decl(decl) => { + collect_declared_idents_from_decl(decl, out); + } + // Handle nested blocks, if statements, etc. + ast::Stmt::Block(block_stmt) => { + collect_block_declarations(block_stmt, out); + } + ast::Stmt::If(if_stmt) => { + if let ast::Stmt::Block(block) = &*if_stmt.cons { + collect_block_declarations(block, out); + } + if let Some(alt) = &if_stmt.alt { + if let ast::Stmt::Block(block) = &**alt { + collect_block_declarations(block, out); + } + } + } + ast::Stmt::While(while_stmt) => { + if let ast::Stmt::Block(block) = &*while_stmt.body { + collect_block_declarations(block, out); + } + } + ast::Stmt::For(for_stmt) => { + // Collect loop variable if present + if let Some(ast::VarDeclOrExpr::VarDecl(var_decl)) = &for_stmt.init { + for decl in &var_decl.decls { + let mut identifiers: Vec<(Id, Span)> = Vec::new(); + collect_from_pat(&decl.name, &mut identifiers); + out.extend(identifiers.into_iter().map(|(id, _)| id)); + } + } + if let ast::Stmt::Block(block) = &*for_stmt.body { + collect_block_declarations(block, out); + } + } + ast::Stmt::ForIn(for_in) => { + if let ast::ForHead::VarDecl(var_decl) = &for_in.left { + for decl in &var_decl.decls { + let mut identifiers: Vec<(Id, Span)> = Vec::new(); + collect_from_pat(&decl.name, &mut identifiers); + out.extend(identifiers.into_iter().map(|(id, _)| id)); + } + } + if let ast::Stmt::Block(block) = &*for_in.body { + collect_block_declarations(block, out); + } + } + ast::Stmt::ForOf(for_of) => { + if let ast::ForHead::VarDecl(var_decl) = &for_of.left { + for decl in &var_decl.decls { + let mut identifiers: Vec<(Id, Span)> = Vec::new(); + collect_from_pat(&decl.name, &mut identifiers); + out.extend(identifiers.into_iter().map(|(id, _)| id)); + } + } + if let ast::Stmt::Block(block) = &*for_of.body { + collect_block_declarations(block, out); + } + } + _ => {} + } + } +} + +#[derive(Debug)] +enum ExprOrSkip { + Expr, + Skip, +} + +#[derive(Debug)] +struct AnyIdentCollector { + local_idents: HashSet, + expr_ctxt: Vec, +} + +impl AnyIdentCollector { + fn new() -> Self { + Self { + local_idents: HashSet::new(), + expr_ctxt: Vec::with_capacity(32), + } + } +} + +impl Visit for AnyIdentCollector { + noop_visit_type!(); + + fn visit_expr(&mut self, node: &ast::Expr) { + self.expr_ctxt.push(ExprOrSkip::Expr); + node.visit_children_with(self); + self.expr_ctxt.pop(); + } + + fn visit_stmt(&mut self, node: &ast::Stmt) { + self.expr_ctxt.push(ExprOrSkip::Skip); + node.visit_children_with(self); + self.expr_ctxt.pop(); + } + + fn visit_jsx_element_name(&mut self, node: &ast::JSXElementName) { + if let ast::JSXElementName::Ident(ref ident) = node { + let ident_name = ident.sym.as_ref().chars().next(); + if let Some('A'..='Z') = ident_name { + } else { + return; + } + } + + node.visit_children_with(self); + } + + fn visit_jsx_attr(&mut self, node: &ast::JSXAttr) { + self.expr_ctxt.push(ExprOrSkip::Skip); + node.visit_children_with(self); + self.expr_ctxt.pop(); + } + + fn visit_ident(&mut self, node: &ast::Ident) { + if matches!(self.expr_ctxt.last(), Some(ExprOrSkip::Expr)) + && (node.sym != *"undefined" + && node.sym != *"NaN" + && node.sym != *"Infinity" + && node.sym != *"null") + { + self.local_idents.insert(id!(node)); + } + } + + fn visit_key_value_prop(&mut self, node: &ast::KeyValueProp) { + self.expr_ctxt.push(ExprOrSkip::Skip); + node.visit_children_with(self); + self.expr_ctxt.pop(); + } + + fn visit_member_expr(&mut self, member: &ast::MemberExpr) { + self.expr_ctxt.push(ExprOrSkip::Skip); + member.visit_children_with(self); + self.expr_ctxt.pop(); + } +} + pub fn create_synthetic_named_export(local: &Id, exported: Option) -> ast::ModuleItem { ast::ModuleItem::ModuleDecl(ast::ModuleDecl::ExportNamed(ast::NamedExport { span: DUMMY_SP, @@ -3668,6 +4332,55 @@ fn build_event_handler_param_pats( new_params } +/// Extract parameter identifiers from an inline handler expression (arrow or function) +/// Returns: (handler_params, all_param_names) +/// where handler_params are the actual Ident patterns, and all_param_names are their symbol names +fn extract_inline_handler_params(expr: &ast::Expr) -> Option<(Vec, Vec)> { + match expr { + ast::Expr::Arrow(arrow) => { + let mut idents = Vec::new(); + let mut names = Vec::new(); + for param in &arrow.params { + if let ast::Pat::Ident(binding) = param { + names.push(binding.id.sym.clone()); + idents.push(binding.id.clone()); + } + } + Some((idents, names)) + } + ast::Expr::Fn(fn_expr) => { + let mut idents = Vec::new(); + let mut names = Vec::new(); + for param in &fn_expr.function.params { + if let ast::Pat::Ident(binding) = ¶m.pat { + names.push(binding.id.sym.clone()); + idents.push(binding.id.clone()); + } + } + Some((idents, names)) + } + _ => None, + } +} + +/// Determine which inline handler parameters should be lifted to q:p/q:ps. +/// For inline handlers outside loops, we can lift parameters that have meaningful names +/// (not just `event` or `el`/`element` which are reserved for event and element refs). +/// Returns the identifiers that should be lifted (params at indices 2+, with meaningful names). +fn get_liftable_inline_handler_params( + handler_idents: &[ast::Ident], + _handler_names: &[Atom], +) -> Vec { + if handler_idents.len() <= 2 { + // Only event and element (or fewer), nothing to lift + return Vec::new(); + } + + // Slots 0-1 are reserved for event and element; skip those + // Slots 2+ are "extra" params that describe what the handler needs + handler_idents[2..].to_vec() +} + /// Transform event handler to add iteration variables as parameters. /// Takes the element's full list of iteration vars (in loop order) so param order matches q:ps. /// For each var: if the handler uses it, add that ident; otherwise add a placeholder (_2, _3, ...). @@ -3951,3 +4664,192 @@ fn process_node_props(pat: &ast::Pat) -> Vec { processed_scope_data } + +#[cfg(test)] +mod param_lifting_tests { + use super::*; + use swc_atoms::atom; + use swc_common::DUMMY_SP; + use swc_ecmascript::ast; + + /// Helper to create an arrow function param as an identifier pattern + fn make_param_ident(name: &str) -> ast::Pat { + ast::Pat::Ident(ast::BindingIdent { + id: ast::Ident::new(Atom::from(name), DUMMY_SP, Default::default()), + type_ann: None, + }) + } + + /// Helper to create an empty arrow function body + fn make_empty_arrow_body() -> ast::BlockStmtOrExpr { + ast::BlockStmtOrExpr::Expr(Box::new(ast::Expr::Lit(ast::Lit::Num(ast::Number { + span: DUMMY_SP, + value: 0.0, + raw: None, + })))) + } + + #[test] + fn test_extract_inline_handler_params_arrow_zero_params() { + // Arrow with no parameters: () => value + let arrow = ast::Expr::Arrow(ast::ArrowExpr { + params: vec![], + body: Box::new(make_empty_arrow_body()), + is_async: false, + is_generator: false, + type_params: None, + return_type: None, + span: DUMMY_SP, + ctxt: Default::default(), + }); + + let result = extract_inline_handler_params(&arrow); + assert!(result.is_some()); + let (idents, names) = result.unwrap(); + assert_eq!(idents.len(), 0); + assert_eq!(names.len(), 0); + } + + #[test] + fn test_extract_inline_handler_params_arrow_with_params() { + // Arrow with parameters: (e, el, item, index) => value + let arrow = ast::Expr::Arrow(ast::ArrowExpr { + params: vec![ + make_param_ident("e"), + make_param_ident("el"), + make_param_ident("item"), + make_param_ident("index"), + ], + body: Box::new(make_empty_arrow_body()), + is_async: false, + is_generator: false, + type_params: None, + return_type: None, + span: DUMMY_SP, + ctxt: Default::default(), + }); + + let result = extract_inline_handler_params(&arrow); + assert!(result.is_some()); + let (idents, names) = result.unwrap(); + assert_eq!(idents.len(), 4); + assert_eq!(names.len(), 4); + assert_eq!(names[0], atom!("e")); + assert_eq!(names[1], atom!("el")); + assert_eq!(names[2], atom!("item")); + assert_eq!(names[3], atom!("index")); + } + + #[test] + fn test_get_liftable_inline_handler_params_none() { + // Only event and element (slots 0-1): nothing to lift + let idents = vec![ + ast::Ident::new(atom!("e"), DUMMY_SP, Default::default()), + ast::Ident::new(atom!("el"), DUMMY_SP, Default::default()), + ]; + let names = vec![atom!("e"), atom!("el")]; + + let result = get_liftable_inline_handler_params(&idents, &names); + assert_eq!(result.len(), 0); + } + + #[test] + fn test_get_liftable_inline_handler_params_single() { + // Event, element, and one extra param (item) + let idents = vec![ + ast::Ident::new(atom!("e"), DUMMY_SP, Default::default()), + ast::Ident::new(atom!("el"), DUMMY_SP, Default::default()), + ast::Ident::new(atom!("item"), DUMMY_SP, Default::default()), + ]; + let names = vec![atom!("e"), atom!("el"), atom!("item")]; + + let result = get_liftable_inline_handler_params(&idents, &names); + assert_eq!(result.len(), 1); + assert_eq!(result[0].sym, atom!("item")); + } + + #[test] + fn test_get_liftable_inline_handler_params_multiple() { + // Event, element, and multiple extra params (item, index, extra) + let idents = vec![ + ast::Ident::new(atom!("e"), DUMMY_SP, Default::default()), + ast::Ident::new(atom!("el"), DUMMY_SP, Default::default()), + ast::Ident::new(atom!("item"), DUMMY_SP, Default::default()), + ast::Ident::new(atom!("index"), DUMMY_SP, Default::default()), + ast::Ident::new(atom!("extra"), DUMMY_SP, Default::default()), + ]; + let names = vec![ + atom!("e"), + atom!("el"), + atom!("item"), + atom!("index"), + atom!("extra"), + ]; + + let result = get_liftable_inline_handler_params(&idents, &names); + assert_eq!(result.len(), 3); + assert_eq!(result[0].sym, atom!("item")); + assert_eq!(result[1].sym, atom!("index")); + assert_eq!(result[2].sym, atom!("extra")); + } + + #[test] + fn test_extract_inline_handler_params_function_expr() { + // Function expression: function(e, el, item) { ... } + let fn_expr = ast::Expr::Fn(ast::FnExpr { + ident: None, + function: Box::new(ast::Function { + params: vec![ + ast::Param { + span: DUMMY_SP, + decorators: vec![], + pat: make_param_ident("e"), + }, + ast::Param { + span: DUMMY_SP, + decorators: vec![], + pat: make_param_ident("el"), + }, + ast::Param { + span: DUMMY_SP, + decorators: vec![], + pat: make_param_ident("item"), + }, + ], + decorators: vec![], + span: DUMMY_SP, + body: Some(ast::BlockStmt { + span: DUMMY_SP, + stmts: vec![], + ctxt: Default::default(), + }), + is_generator: false, + is_async: false, + type_params: None, + return_type: None, + ctxt: Default::default(), + }), + }); + + let result = extract_inline_handler_params(&fn_expr); + assert!(result.is_some()); + let (idents, names) = result.unwrap(); + assert_eq!(idents.len(), 3); + assert_eq!(names[0], atom!("e")); + assert_eq!(names[1], atom!("el")); + assert_eq!(names[2], atom!("item")); + } + + #[test] + fn test_extract_inline_handler_params_non_function() { + // Non-function expression: should return None + let literal = ast::Expr::Lit(ast::Lit::Num(ast::Number { + span: DUMMY_SP, + value: 42.0, + raw: None, + })); + + let result = extract_inline_handler_params(&literal); + assert!(result.is_none()); + } +} diff --git a/packages/qwik/src/server/platform.unit.ts b/packages/qwik/src/server/platform.unit.ts index 2219ce6aba6..826cd8cf228 100644 --- a/packages/qwik/src/server/platform.unit.ts +++ b/packages/qwik/src/server/platform.unit.ts @@ -45,7 +45,7 @@ describe('server platform', () => { didThrow = true; // The error should be a QError with code for dynamic import failed expect(e.message).toMatch(/Code\(Q\d+\)/); - expect(e.message).toContain('Dynamic import not found'); + expect(e.message).toContain(`Dynamic import ${symbolName} not found`); } expect(didThrow).toBe(true); }); diff --git a/packages/qwik/src/testing/rendering.unit-util.tsx b/packages/qwik/src/testing/rendering.unit-util.tsx index 527c98217c3..ae783fe888c 100644 --- a/packages/qwik/src/testing/rendering.unit-util.tsx +++ b/packages/qwik/src/testing/rendering.unit-util.tsx @@ -1,5 +1,5 @@ /* eslint-disable no-console */ -import { Slot, component$, render, type JSXOutput } from '@qwik.dev/core'; +import { Slot, componentQrl, inlinedQrl, render, type JSXOutput } from '@qwik.dev/core'; import { _getDomContainer } from '@qwik.dev/core/internal'; import type { _ContainerElement, @@ -355,10 +355,12 @@ function getHostVNode(vElement: _VNode | null) { } export const ErrorProvider = Object.assign( - component$(() => { - (ErrorProvider as any).error = null; - useContextProvider(ERROR_CONTEXT, ErrorProvider as any); - return ; - }), + componentQrl( + inlinedQrl(() => { + (ErrorProvider as any).error = null; + useContextProvider(ERROR_CONTEXT, ErrorProvider as any); + return ; + }, 's_ErrorProvider') + ), { error: null as any } ); diff --git a/starters/dev-server.ts b/starters/dev-server.ts index d519ab54e06..e16bae90367 100644 --- a/starters/dev-server.ts +++ b/starters/dev-server.ts @@ -33,8 +33,25 @@ const escapeChars = (filePath: string) => { return isWindows ? filePath.replace(/\\/g, "\\\\") : filePath; }; +// Parse command line arguments +let buildTarget: string | undefined; +let port = 3300; + +for (let i = 2; i < process.argv.length; i++) { + const arg = process.argv[i]; + if (arg.startsWith("--build=")) { + buildTarget = arg.substring("--build=".length); + } else if (arg === "--build" && i + 1 < process.argv.length) { + buildTarget = process.argv[++i]; + } else { + const portNum = parseInt(arg, 10); + if (!isNaN(portNum)) { + port = portNum; + } + } +} + const app = express(); -const port = parseInt(process.argv[process.argv.length - 1], 10) || 3300; const address = `http://localhost:${port}/`; const __dirname = fileURLToPath(new URL(".", import.meta.url)); const startersDir = __dirname; @@ -337,7 +354,61 @@ function favicon(_: Request, res: Response) { res.sendFile(path); } +function printUsage() { + console.log(` +Qwik Dev Server - Starter Apps Builder + +Usage: node dev-server.ts [OPTIONS] [PORT] + +OPTIONS: + --build=APPNAME Build a specific app and exit (don't start server) + --build APPNAME Same as --build=APPNAME + +ARGUMENTS: + PORT Port number (default: 3300) + +Examples: + node dev-server.ts # Start server on port 3300 + node dev-server.ts 3400 # Start server on port 3400 + node dev-server.ts --build=qwikrouter-test # Build qwikrouter-test and exit + node dev-server.ts --build qwik-spa 3400 # Build qwik-spa and exit (port ignored) + +Available apps: +${appNames.map((a) => ` - ${a}`).join("\n")} + `); +} + async function main() { + // Handle build-and-exit mode + if (buildTarget) { + if (!appNames.includes(buildTarget)) { + console.error(`\n❌ Unknown app: "${buildTarget}"\n`); + printUsage(); + process.exit(1); + } + + console.log(`\n🏗️ Building ${buildTarget}...\n`); + const appDir = join(startersAppsDir, buildTarget); + try { + // Read package.json to determine if qwik-router should be enabled + const pkgPath = join(appDir, "package.json"); + const pkgJson: PackageJSON = JSON.parse(readFileSync(pkgPath, "utf-8")); + const enableRouterServer = !!pkgJson.__qwik__?.qwikRouter; + + await buildApp(appDir, buildTarget, enableRouterServer); + console.log(`\n✅ Successfully built ${buildTarget}\n`); + process.exit(0); + } catch (error: any) { + console.error( + `\n❌ Build failed for ${buildTarget}:\n`, + error.stack || error, + ); + process.exit(1); + } + } + + // Normal server mode + const app = express(); const partytownPath = resolve( startersDir, "..", From ce96fb140af5538752af32504378b9c06b15d9a7 Mon Sep 17 00:00:00 2001 From: Wout Mertens Date: Wed, 4 Mar 2026 14:19:53 +0100 Subject: [PATCH 04/11] feat(optimizer): nicer formatting --- packages/qwik/src/optimizer/core/src/parse.rs | 99 +++++++++++++++++-- ..._component_level_self_referential_qrl.snap | 14 ++- ...e__test__destructure_args_colon_props.snap | 7 +- ...__test__destructure_args_colon_props2.snap | 7 +- ...__test__destructure_args_colon_props3.snap | 7 +- ...estructure_args_inline_cmp_block_stmt.snap | 8 +- ...structure_args_inline_cmp_block_stmt2.snap | 8 +- ...destructure_args_inline_cmp_expr_stmt.snap | 8 +- .../snapshots/qwik_core__test__example_1.snap | 7 +- .../qwik_core__test__example_10.snap | 1 + .../qwik_core__test__example_11.snap | 14 ++- .../snapshots/qwik_core__test__example_2.snap | 8 +- .../snapshots/qwik_core__test__example_3.snap | 8 +- .../snapshots/qwik_core__test__example_4.snap | 8 +- .../snapshots/qwik_core__test__example_5.snap | 8 +- .../snapshots/qwik_core__test__example_6.snap | 3 +- .../snapshots/qwik_core__test__example_7.snap | 11 ++- .../snapshots/qwik_core__test__example_8.snap | 11 ++- .../snapshots/qwik_core__test__example_9.snap | 1 + ...qwik_core__test__example_build_server.snap | 7 +- ...k_core__test__example_capture_imports.snap | 14 ++- ...ore__test__example_capturing_fn_class.snap | 11 ++- .../qwik_core__test__example_class_name.snap | 7 +- ...nent_with_event_listeners_inside_loop.snap | 27 +++-- ...est__example_custom_inlined_functions.snap | 14 ++- .../qwik_core__test__example_dead_code.snap | 4 +- ...ik_core__test__example_default_export.snap | 11 ++- ...e__test__example_default_export_index.snap | 3 +- ..._example_default_export_invalid_ident.snap | 8 +- ...est__example_derived_signals_children.snap | 3 +- ...re__test__example_derived_signals_cmp.snap | 3 +- ...ple_derived_signals_complext_children.snap | 3 +- ...re__test__example_derived_signals_div.snap | 3 +- ...ple_derived_signals_multiple_children.snap | 3 +- .../qwik_core__test__example_dev_mode.snap | 8 +- ..._core__test__example_dev_mode_inlined.snap | 3 +- ...core__test__example_drop_side_effects.snap | 11 ++- ...st__example_explicit_ext_no_transpile.snap | 8 +- ..._test__example_explicit_ext_transpile.snap | 11 ++- ...qwik_core__test__example_export_issue.snap | 10 +- .../qwik_core__test__example_exports.snap | 11 ++- ...ore__test__example_fix_dynamic_import.snap | 7 +- ...e__test__example_functional_component.snap | 7 +- ..._test__example_functional_component_2.snap | 14 ++- ...le_functional_component_capture_props.snap | 15 ++- ...core__test__example_getter_generation.snap | 10 +- ...ore__test__example_immutable_analysis.snap | 15 ++- ...example_immutable_function_components.snap | 3 +- ..._core__test__example_import_assertion.snap | 7 +- ..._test__example_inlined_entry_strategy.snap | 3 +- .../qwik_core__test__example_input_bind.snap | 3 +- ...ore__test__example_invalid_references.snap | 11 ++- ...__test__example_invalid_segment_expr1.snap | 14 ++- .../qwik_core__test__example_issue_33443.snap | 3 +- .../qwik_core__test__example_issue_4438.snap | 3 +- .../qwik_core__test__example_jsx.snap | 11 ++- ...core__test__example_jsx_import_source.snap | 7 +- .../qwik_core__test__example_jsx_keyed.snap | 7 +- ...wik_core__test__example_jsx_keyed_dev.snap | 7 +- ...wik_core__test__example_jsx_listeners.snap | 12 ++- ..._test__example_lightweight_functional.snap | 13 ++- ...wik_core__test__example_manual_chunks.snap | 18 +++- ...mple_missing_custom_inlined_functions.snap | 6 +- ...wik_core__test__example_multi_capture.snap | 18 +++- ..._core__test__example_mutable_children.snap | 3 +- ...wik_core__test__example_noop_dev_mode.snap | 8 +- ...ore__test__example_of_synchronous_qrl.snap | 7 +- ...test__example_optimization_issue_3542.snap | 3 +- ...test__example_optimization_issue_3561.snap | 3 +- ...test__example_optimization_issue_3795.snap | 3 +- ...test__example_optimization_issue_4386.snap | 3 +- ...re__test__example_parsed_inlined_qrls.snap | 3 +- ...ore__test__example_preserve_filenames.snap | 3 +- ...__example_preserve_filenames_segments.snap | 8 +- .../qwik_core__test__example_prod_node.snap | 8 +- ...ore__test__example_props_optimization.snap | 3 +- ...ik_core__test__example_props_wrapping.snap | 3 +- ...k_core__test__example_props_wrapping2.snap | 3 +- ...test__example_props_wrapping_children.snap | 3 +- ...est__example_props_wrapping_children2.snap | 3 +- ...wik_core__test__example_qwik_conflict.snap | 15 ++- .../qwik_core__test__example_qwik_react.snap | 11 ++- ...core__test__example_qwik_react_inline.snap | 3 +- ...ore__test__example_qwik_router_client.snap | 76 +++++++++----- ...ore__test__example_qwik_router_inline.snap | 4 +- ...__test__example_reg_ctx_name_segments.snap | 5 +- ...example_reg_ctx_name_segments_hoisted.snap | 3 +- ...example_reg_ctx_name_segments_inlined.snap | 3 +- ...k_core__test__example_renamed_exports.snap | 11 ++- ...t__example_segment_variable_migration.snap | 10 +- ..._self_referential_component_migration.snap | 20 ++-- .../qwik_core__test__example_server_auth.snap | 11 ++- ...ik_core__test__example_skip_transform.snap | 6 +- .../qwik_core__test__example_spread_jsx.snap | 9 +- ...core__test__example_strip_client_code.snap | 3 +- ...e__test__example_strip_exports_unused.snap | 4 +- ...ore__test__example_strip_exports_used.snap | 11 ++- ...core__test__example_strip_server_code.snap | 11 ++- ...ore__test__example_transpile_jsx_only.snap | 8 +- ...core__test__example_transpile_ts_only.snap | 3 +- .../qwik_core__test__example_ts_enums.snap | 7 +- ...re__test__example_ts_enums_issue_1341.snap | 7 +- ...__test__example_ts_enums_no_transpile.snap | 7 +- ...core__test__example_use_client_effect.snap | 11 ++- ..._core__test__example_use_optimization.snap | 3 +- ..._core__test__example_use_server_mount.snap | 18 +++- .../qwik_core__test__example_with_style.snap | 8 +- ...qwik_core__test__example_with_tagname.snap | 8 +- ...core__test__hoisted_fn_signal_in_loop.snap | 7 +- .../qwik_core__test__impure_template_fns.snap | 12 ++- ...ifier_reference_when_hoisted_snapshot.snap | 3 +- .../snapshots/qwik_core__test__issue_150.snap | 11 ++- .../snapshots/qwik_core__test__issue_476.snap | 6 +- .../qwik_core__test__issue_5008.snap | 11 ++- .../qwik_core__test__issue_7216_add_test.snap | 8 +- .../snapshots/qwik_core__test__issue_964.snap | 7 +- .../qwik_core__test__lib_mode_fn_signal.snap | 11 ++- .../qwik_core__test__relative_paths.snap | 18 +++- .../qwik_core__test__rename_builder_io.snap | 7 +- ...test__root_level_self_referential_qrl.snap | 7 +- ...oot_level_self_referential_qrl_inline.snap | 3 +- ...core__test__should_convert_jsx_events.snap | 8 +- ...core__test__should_convert_rest_props.snap | 11 ++- ...k_core__test__should_destructure_args.snap | 7 +- ...act_multiple_qrls_with_item_and_index.snap | 8 +- ...s_with_item_and_index_and_capture_ref.snap | 14 ++- ...core__test__should_extract_single_qrl.snap | 15 ++- ...re__test__should_extract_single_qrl_2.snap | 14 ++- ..._should_extract_single_qrl_with_index.snap | 15 ++- ...act_single_qrl_with_nested_components.snap | 13 ++- ...uld_handle_dangerously_set_inner_html.snap | 11 ++- ..._test__should_ignore_null_inlined_qrl.snap | 5 +- ...ld_make_component_jsx_split_with_bind.snap | 7 +- ...mark_props_as_var_props_for_inner_cmp.snap | 14 ++- ...ld_merge_attributes_with_spread_props.snap | 7 +- ...es_with_spread_props_before_and_after.snap | 7 +- ...hould_merge_bind_checked_and_on_input.snap | 8 +- ..._should_merge_bind_value_and_on_input.snap | 8 +- ...hould_merge_on_input_and_bind_checked.snap | 8 +- ..._should_merge_on_input_and_bind_value.snap | 8 +- ...__should_move_bind_value_to_var_props.snap | 8 +- ...d_to_iteration_variables_to_var_props.snap | 7 +- ...enerate_conflicting_props_identifiers.snap | 3 +- ...nd_checked_in_var_props_for_jsx_split.snap | 7 +- ...bind_value_in_var_props_for_jsx_split.snap | 7 +- ..._not_transform_events_on_non_elements.snap | 8 +- .../qwik_core__test__should_not_wrap_fn.snap | 11 ++- ...rap_ternary_function_operator_with_fn.snap | 7 +- ...__should_not_wrap_var_template_string.snap | 8 +- ...core__test__should_split_spread_props.snap | 7 +- ...lit_spread_props_with_additional_prop.snap | 7 +- ...it_spread_props_with_additional_prop2.snap | 7 +- ...it_spread_props_with_additional_prop3.snap | 7 +- ...it_spread_props_with_additional_prop4.snap | 11 ++- ...it_spread_props_with_additional_prop5.snap | 7 +- ...oped_variables_and_item_index_in_loop.snap | 8 +- ...nsform_block_scoped_variables_in_loop.snap | 8 +- ...nsform_component_with_normal_function.snap | 13 ++- ...orm_event_names_without_jsx_transpile.snap | 8 +- ...ould_transform_handler_in_for_of_loop.snap | 8 +- ...capturing_cross_scope_in_nested_loops.snap | 14 ++- ...tiple_handler_with_different_captures.snap | 8 +- ...oped_variables_and_item_index_in_loop.snap | 8 +- ...ltiple_block_scoped_variables_in_loop.snap | 8 +- ...uld_transform_multiple_event_handlers.snap | 8 +- ...ansform_multiple_event_handlers_case2.snap | 8 +- ...__test__should_transform_nested_loops.snap | 12 ++- ...ops_handler_captures_only_inner_scope.snap | 8 +- ..._transform_qrls_in_ternary_expression.snap | 14 ++- ...one_handler_with_captures_one_without.snap | 8 +- ...ted_loops_handler_captures_outer_only.snap | 11 ++- ...pturing_different_block_scope_in_loop.snap | 8 +- .../qwik_core__test__should_work.snap | 7 +- ...ould_wrap_inner_inline_component_prop.snap | 7 +- ...d_wrap_logical_expression_in_template.snap | 7 +- ...st__should_wrap_object_with_fn_signal.snap | 7 +- ...uld_wrap_prop_from_destructured_array.snap | 19 +++- ...e__test__should_wrap_store_expression.snap | 7 +- ...p_type_asserted_variables_in_template.snap | 7 +- .../qwik_core__test__special_jsx.snap | 6 +- ...wik_core__test__support_windows_paths.snap | 7 +- .../qwik_core__test__ternary_prop.snap | 12 ++- ...__test__transform_qrl_in_regular_prop.snap | 8 +- 183 files changed, 1216 insertions(+), 447 deletions(-) diff --git a/packages/qwik/src/optimizer/core/src/parse.rs b/packages/qwik/src/optimizer/core/src/parse.rs index f337ebf7ee4..65a97b69c5b 100644 --- a/packages/qwik/src/optimizer/core/src/parse.rs +++ b/packages/qwik/src/optimizer/core/src/parse.rs @@ -32,7 +32,7 @@ use swc_common::{Span, DUMMY_SP}; use anyhow::{Context, Error}; use swc_atoms::Atom; -use swc_common::comments::SingleThreadedComments; +use swc_common::comments::{Comment, CommentKind, Comments, SingleThreadedComments}; use swc_common::errors::{DiagnosticBuilder, DiagnosticId, Emitter, Handler}; use swc_common::{sync::Lrc, FileName, Globals, Mark, SourceMap}; use swc_ecmascript::ast; @@ -509,6 +509,7 @@ pub fn transform_code(config: TransformCodeOptions) -> Result Result emit_source_code( - Lrc::clone(&source_map), - Some(comments), - modu, - config.root_dir, - config.source_maps, - )?, + ast::Program::Module(ref mut modu) => { + add_section_separators(modu, &comments); + emit_source_code( + Lrc::clone(&source_map), + Some(comments), + modu, + config.root_dir, + config.source_maps, + )? + } _ => (String::new(), None), }; @@ -723,6 +727,85 @@ pub fn emit_source_code( } } +/// Add `//` separator comments between import declarations, QRL const declarations, +/// and other module-level statements for readability. Uses `Span::dummy_with_cmt()` +/// so the extra lines don't affect source maps. +fn add_section_separators(module: &mut ast::Module, comments: &SingleThreadedComments) { + #[derive(PartialEq)] + enum Section { + Import, + QrlDecl, + Other, + } + + fn classify(item: &ast::ModuleItem) -> Section { + match item { + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::Import(_)) => Section::Import, + ast::ModuleItem::Stmt(ast::Stmt::Decl(ast::Decl::Var(var))) => { + if let Some(decl) = var.decls.first() { + if let ast::Pat::Ident(ident) = &decl.name { + let name = &*ident.id.sym; + if name.starts_with("_qrl_") || name.starts_with("i_") { + return Section::QrlDecl; + } + } + } + Section::Other + } + _ => Section::Other, + } + } + + /// Ensure the item's span.lo is non-dummy so comments can be emitted on it. + fn ensure_comment_pos(item: &mut ast::ModuleItem) -> swc_common::BytePos { + use swc_common::Spanned; + let lo = item.span().lo; + if !lo.is_dummy() { + return lo; + } + let cmt_lo = Span::dummy_with_cmt().lo; + match item { + ast::ModuleItem::ModuleDecl(decl) => match decl { + ast::ModuleDecl::Import(d) => d.span.lo = cmt_lo, + ast::ModuleDecl::ExportDecl(d) => d.span.lo = cmt_lo, + ast::ModuleDecl::ExportDefaultDecl(d) => d.span.lo = cmt_lo, + ast::ModuleDecl::ExportDefaultExpr(d) => d.span.lo = cmt_lo, + ast::ModuleDecl::ExportAll(d) => d.span.lo = cmt_lo, + ast::ModuleDecl::ExportNamed(d) => d.span.lo = cmt_lo, + _ => return lo, // can't handle TS-specific decls, skip + }, + ast::ModuleItem::Stmt(stmt) => match stmt { + ast::Stmt::Decl(ast::Decl::Var(v)) => v.span.lo = cmt_lo, + ast::Stmt::Decl(ast::Decl::Fn(f)) => f.function.span.lo = cmt_lo, + ast::Stmt::Expr(e) => e.span.lo = cmt_lo, + _ => return lo, + }, + } + cmt_lo + } + + let mut prev_section: Option
= None; + for item in &mut module.body { + let section = classify(item); + if let Some(ref prev) = prev_section { + if prev != §ion && section != Section::Import { + let lo = ensure_comment_pos(item); + if !lo.is_dummy() { + comments.add_leading( + lo, + Comment { + kind: CommentKind::Line, + text: Atom::from(""), + span: DUMMY_SP, + }, + ); + } + } + } + prev_section = Some(section); + } +} + fn handle_error( error_buffer: &ErrorBuffer, origin: Atom, diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__component_level_self_referential_qrl.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__component_level_self_referential_qrl.snap index 9419fdfce7b..c1744c3d8bc 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__component_level_self_referential_qrl.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__component_level_self_referential_qrl.snap @@ -35,8 +35,10 @@ export const Foo = component$((props) => { import { qrl } from "@qwik.dev/core"; import { useAsyncQrl } from "@qwik.dev/core"; +// const i_f0BGwWm4eeY = ()=>import("./test.tsx_Foo_component_sig_useAsync_f0BGwWm4eeY"); const i_fsHooibmyyE = ()=>import("./test.tsx_Foo_component_other_useAsync_fsHooibmyyE"); +// export const Foo_component_HTDRsvUbLiE = (props)=>{ const _ref = {}; _ref.sig = useAsyncQrl(/*#__PURE__*/ qrl(i_f0BGwWm4eeY, "Foo_component_sig_useAsync_f0BGwWm4eeY", [ @@ -53,7 +55,7 @@ export const Foo_component_HTDRsvUbLiE = (props)=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;yCAI8B,CAAC;IAC9B;eAAY;;;IAAZ,QAAM;iBAOQ;;;IAAd,QAAM;IAON,QACE,IAAI;GACJ,CAAC,MAAM,KAAK,CAAC;EACd,EAAE;AAEJ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;yCAI8B,CAAC;IAC9B;eAAY;;;IAAZ,QAAM;iBAOQ;;;IAAd,QAAM;IAON,QACE,IAAI;GACJ,CAAC,MAAM,KAAK,CAAC;EACd,EAAE;AAEJ\"}") /* { "origin": "test.tsx", @@ -80,6 +82,7 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx_Foo_component_other_useAsync_fsHooibmyyE.tsx (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; +// export const Foo_component_other_useAsync_fsHooibmyyE = async (_rawProps)=>{ const other = _captures[0]; const timer = setInterval(()=>{ @@ -90,7 +93,7 @@ export const Foo_component_other_useAsync_fsHooibmyyE = async (_rawProps)=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";wDAYyB;;IACvB,MAAM,QAAQ,YAAY;QACzB,MAAM,KAAK;IACZ,GAAG;IACH,UAJ+B,QAIvB,IAAM,cAAc;IAC5B,OAAO\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;wDAYyB;;IACvB,MAAM,QAAQ,YAAY;QACzB,MAAM,KAAK;IACZ,GAAG;IACH,UAJ+B,QAIvB,IAAM,cAAc;IAC5B,OAAO\"}") /* { "origin": "test.tsx", @@ -121,15 +124,18 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE"); // Component-level self-referential component +// export const Foo = /*#__PURE__*/ componentQrl(_qrl_Foo_component_HTDRsvUbLiE); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6CAA6C;AAC7C,OAAO,MAAM,oBAAM,6CAoBhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAGA,6CAA6C;;AAC7C,OAAO,MAAM,oBAAM,6CAoBhB\"}") ============================= test.tsx_Foo_component_sig_useAsync_f0BGwWm4eeY.tsx (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; +// export const Foo_component_sig_useAsync_f0BGwWm4eeY = async (_rawProps)=>{ const sig = _captures[0]; const timer = setInterval(()=>{ @@ -140,7 +146,7 @@ export const Foo_component_sig_useAsync_f0BGwWm4eeY = async (_rawProps)=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";sDAKuB;;IACrB,MAAM,QAAQ,YAAY;QACzB,IAAI,KAAK;IACV,GAAG;IACH,UAJ6B,QAIrB,IAAM,cAAc;IAC5B,OAAO\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;sDAKuB;;IACrB,MAAM,QAAQ,YAAY;QACzB,IAAI,KAAK;IACV,GAAG;IACH,UAJ6B,QAIrB,IAAM,cAAc;IAC5B,OAAO\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props.snap index 6bf6ecb7ce3..f9665ccb087 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props.snap @@ -20,22 +20,25 @@ expression: output import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +// export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEE,6BAAe,8CAOZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAEE,6BAAe,8CAOZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; import { _jsxSorted } from "@qwik.dev/core"; import { _wrapProp } from "@qwik.dev/core"; +// export const test_component_LUXeXe0DQrg = (props)=>{ return /*#__PURE__*/ _jsxSorted(_Fragment, null, null, _wrapProp(props, "bind:value"), 1, "u6_0"); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;0CAE4B,CAAC;IAE1B,qBACC,4CAFmC;AAMrC\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;0CAE4B,CAAC;IAE1B,qBACC,4CAFmC;AAMrC\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props2.snap index 6c908f94ab1..846a10d67c9 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props2.snap @@ -21,24 +21,27 @@ expression: output import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +// export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEE,6BAAe,8CAQZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAEE,6BAAe,8CAQZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; import { _jsxSorted } from "@qwik.dev/core"; import { _wrapProp } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; +// export const test_component_LUXeXe0DQrg = (props)=>{ const test = useSignal(props["bind:value"]); return /*#__PURE__*/ _jsxSorted(_Fragment, null, null, _wrapProp(test), 3, "u6_0"); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;0CAE4B,CAAC;IAE1B,MAAM,OAAO,UADuB;IAEpC,qBACC,4CACC;AAGH\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;0CAE4B,CAAC;IAE1B,MAAM,OAAO,UADuB;IAEpC,qBACC,4CACC;AAGH\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props3.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props3.snap index 37c1743a9ac..075825e42ac 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props3.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props3.snap @@ -21,11 +21,13 @@ expression: output import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_LUXeXe0DQrg"), "test_component_LUXeXe0DQrg"); +// export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEE,6BAAe,8CAQZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAEE,6BAAe,8CAQZ\"}") ============================= test.tsx_test_component_LUXeXe0DQrg.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; @@ -33,6 +35,7 @@ import { _fnSignal } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { _restProps } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; +// const _hf0 = (p0)=>p0.test.value; const _hf0_str = "p0.test.value"; export const test_component_LUXeXe0DQrg = (props)=>{ @@ -46,7 +49,7 @@ export const test_component_LUXeXe0DQrg = (props)=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;mBAOK,GAJM,KAID,KAAK;;0CALa,CAAC;4BACA;;;IACb,UAAU,IAAI,CAAC,aAAa;IACzC,qBACC;;;AAIF\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;mBAOK,GAJM,KAID,KAAK;;0CALa,CAAC;4BACA;;;IACb,UAAU,IAAI,CAAC,aAAa;IACzC,qBACC;;;AAIF\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt.snap index 27c3f92c164..054a62bcdbb 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt.snap @@ -19,11 +19,14 @@ expression: output ============================= test.js == +// import { _fnSignal } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; +// const _hf0 = (p0)=>p0.data.selectedOutputDetail === 'options'; const _hf0_str = 'p0.data.selectedOutputDetail==="options"'; +// const i_pFqTss400MA = ()=>import("./test.tsx_test_div_q_e_click_pFqTss400MA"); export default ((_rawProps)=>{ return /*#__PURE__*/ _jsxSorted("div", { @@ -37,17 +40,18 @@ export default ((_rawProps)=>{ }); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;mBAI8B,GAHV,KAGe,oBAAoB,KAAK;;;AAH1D,eAAe,CAAA;IACP,qBACE,WAAC;QACC,gBAAc;;;QACd,WAAQ;;;;AAKpB,CAAA,EAAE\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;mBAI8B,GAHV,KAGe,oBAAoB,KAAK;;;;AAH1D,eAAe,CAAA;IACP,qBACE,WAAC;QACC,gBAAc;;;QACd,WAAQ;;;;AAKpB,CAAA,EAAE\"}") ============================= test.tsx_test_div_q_e_click_pFqTss400MA.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; +// export const test_div_q_e_click_pFqTss400MA = ()=>{ const _rawProps = _captures[0]; _rawProps.data.selectedOutputDetail = 'options'; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";8CAKwB;;IACR,UALI,KAKC,oBAAoB,GAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;8CAKwB;;IACR,UALI,KAKC,oBAAoB,GAAG\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt2.snap index 239743b158c..7849f157fa1 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt2.snap @@ -20,11 +20,14 @@ expression: output ============================= test.js == +// import { _fnSignal } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; +// const _hf0 = (p0)=>p0.data.selectedOutputDetail === 'options'; const _hf0_str = 'p0.data.selectedOutputDetail==="options"'; +// const i_pFqTss400MA = ()=>import("./test.tsx_test_div_q_e_click_pFqTss400MA"); export default ((props)=>{ return /*#__PURE__*/ _jsxSorted("div", { @@ -38,17 +41,18 @@ export default ((props)=>{ }); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;mBAK8B,GAHlB,KAGuB,oBAAoB,KAAK;;;AAJ1D,eAAe,CAAA,CAAC;IAER,qBACE,WAAC;QACC,gBAAc;;;QACd,WAAQ;;;;AAKpB,CAAA,EAAE\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;mBAK8B,GAHlB,KAGuB,oBAAoB,KAAK;;;;AAJ1D,eAAe,CAAA,CAAC;IAER,qBACE,WAAC;QACC,gBAAc;;;QACd,WAAQ;;;;AAKpB,CAAA,EAAE\"}") ============================= test.tsx_test_div_q_e_click_pFqTss400MA.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; +// export const test_div_q_e_click_pFqTss400MA = ()=>{ const props = _captures[0]; props.data.selectedOutputDetail = 'options'; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";8CAMwB;;IAJH,MAAT,KAKS,oBAAoB,GAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;8CAMwB;;IAJH,MAAT,KAKS,oBAAoB,GAAG\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_expr_stmt.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_expr_stmt.snap index bc81da480f4..b658c75d6fa 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_expr_stmt.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_expr_stmt.snap @@ -16,11 +16,14 @@ expression: output ============================= test.js == +// import { _fnSignal } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; +// const _hf0 = (p0)=>p0.data.selectedOutputDetail === 'options'; const _hf0_str = 'p0.data.selectedOutputDetail==="options"'; +// const i_pFqTss400MA = ()=>import("./test.tsx_test_div_q_e_click_pFqTss400MA"); export default ((_rawProps)=>/*#__PURE__*/ _jsxSorted("div", { "data-is-active": _fnSignal(_hf0, [ @@ -32,17 +35,18 @@ export default ((_rawProps)=>/*#__PURE__*/ _jsxSorted("div", { }, null, null, 2, "u6_0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;mBAG8B,GAFV,KAEe,oBAAoB,KAAK;;;AAF1D,eAAe,CAAA,2BACL,WAAC;QACC,gBAAc;;;QACd,WAAQ;;;6BAGT,EAAE\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;mBAG8B,GAFV,KAEe,oBAAoB,KAAK;;;;AAF1D,eAAe,CAAA,2BACL,WAAC;QACC,gBAAc;;;QACd,WAAQ;;;6BAGT,EAAE\"}") ============================= test.tsx_test_div_q_e_click_pFqTss400MA.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; +// export const test_div_q_e_click_pFqTss400MA = ()=>{ const _rawProps = _captures[0]; _rawProps.data.selectedOutputDetail = 'options'; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";8CAIwB;;IACR,UAJI,KAIC,oBAAoB,GAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;8CAIwB;;IACR,UAJI,KAIC,oBAAoB,GAAG\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_1.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_1.snap index 8f4e7bc7dd3..480319f1fdd 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_1.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_1.snap @@ -51,21 +51,24 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { qrl } from "@qwik.dev/core"; import { component } from '@qwik.dev/core'; +// export const renderHeader1 = /*#__PURE__*/ qrl(()=>import("./test.tsx_renderHeader1_jMxQsjbyDss"), "renderHeader1_jMxQsjbyDss"); component(/*#__PURE__*/ qrl(()=>import("./test.tsx_renderHeader2_component_Ay6ibkfFYsw"), "renderHeader2_component_Ay6ibkfFYsw")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";AACA,SAAY,SAAS,QAAkB,iBAAiB;AAExD,OAAO,MAAM,mHAIV;AACmB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";AACA,SAAY,SAAS,QAAkB,iBAAiB;;AAExD,OAAO,MAAM,mHAIV;AACmB\"}") ============================= test.tsx_renderHeader1_jMxQsjbyDss.tsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; +// const _qrl_renderHeader1_div_onClick_USi8k1jUb40 = /*#__PURE__*/ qrl(()=>import("./test.tsx_renderHeader1_div_onClick_USi8k1jUb40"), "renderHeader1_div_onClick_USi8k1jUb40"); +// export const renderHeader1_jMxQsjbyDss = ()=>{ return
; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;yCAG+B;IAC9B,QACE,IAAI;AAEP\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;yCAG+B;IAC9B,QACE,IAAI;AAEP\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_10.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_10.snap index f07da64d403..114089c9223 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_10.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_10.snap @@ -79,6 +79,7 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\" ============================= project/test.tsx == import { qrl } from "@qwik.dev/core"; +// /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_WlR3xnI6u38"), "Header_WlR3xnI6u38"); diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_11.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_11.snap index e7829f59a60..01a2e76ccc5 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_11.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_11.snap @@ -28,10 +28,11 @@ export const App = component$(() => { ============================= project/test.tsx_Header_component_Header_onClick_KjD9TCNkNxY.tsx == import dep3 from "dep3/something"; +// export const Header_component_Header_onClick_KjD9TCNkNxY = (ev)=>dep3(ev); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";2DAQqB,CAAC,KAAO,KAAK\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;2DAQqB,CAAC,KAAO,KAAK\"}") /* { "origin": "project/test.tsx", @@ -61,7 +62,9 @@ import { Header } from "./test"; import { bar as bbar } from "../state"; import * as dep2 from "dep2"; import { qrl } from "@qwik.dev/core"; +// const _qrl_Header_component_Header_onClick_KjD9TCNkNxY = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_Header_onClick_KjD9TCNkNxY"), "Header_component_Header_onClick_KjD9TCNkNxY"); +// export const Header_component_UVBJuFYfvDo = ()=>{ return
{dep2.stuff()}{bbar()} @@ -69,7 +72,7 @@ export const Header_component_UVBJuFYfvDo = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;;;4CAMiC;IAChC,QACE,OAAO,2DAA8B;GACrC,CAAC,KAAK,KAAK,IAAI,OAAO;EACvB,EAAE;AAEJ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;4CAMiC;IAChC,QACE,OAAO,2DAA8B;GACrC,CAAC,KAAK,KAAK,IAAI,OAAO;EACvB,EAAE;AAEJ\"}") /* { "origin": "project/test.tsx", @@ -94,12 +97,13 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\" import { Header } from "./test"; import { foo } from "../state"; +// export const App_component_wGkRHWXaqjs = ()=>{ return
{foo()}
; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;yCAc8B;IAC7B,QACE,QAAQ,QAAQ;AAEnB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;yCAc8B;IAC7B,QACE,QAAQ,QAAQ;AAEnB\"}") /* { "origin": "project/test.tsx", @@ -124,13 +128,15 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\" import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_App_component_wGkRHWXaqjs = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_wGkRHWXaqjs"), "App_component_wGkRHWXaqjs"); const _qrl_Header_component_UVBJuFYfvDo = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_UVBJuFYfvDo"), "Header_component_UVBJuFYfvDo"); +// export const Header = /*#__PURE__*/ componentQrl(_qrl_Header_component_UVBJuFYfvDo); export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_wGkRHWXaqjs); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAMA,OAAO,MAAM,uBAAS,gDAMnB;AAEH,OAAO,MAAM,oBAAM,6CAIhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;AAMA,OAAO,MAAM,uBAAS,gDAMnB;AAEH,OAAO,MAAM,oBAAM,6CAIhB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_2.snap index 7d6a6ef0d46..1dd0aa19858 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_2.snap @@ -17,14 +17,16 @@ export const Header = component$(() => { ============================= test.tsx_Header_component_J4uyIhaBNR4.tsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; +// const _qrl_Header_component_div_onClick_i7ekvWH3674 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_div_onClick_i7ekvWH3674"), "Header_component_div_onClick_i7ekvWH3674"); +// export const Header_component_J4uyIhaBNR4 = ()=>{ console.log("mount"); return
; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;4CAEiC;IAChC,QAAQ,GAAG,CAAC;IACZ,QACE,IAAI;AAEP\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;4CAEiC;IAChC,QAAQ,GAAG,CAAC;IACZ,QACE,IAAI;AAEP\"}") /* { "origin": "test.tsx", @@ -49,11 +51,13 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_Header_component_J4uyIhaBNR4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_J4uyIhaBNR4"), "Header_component_J4uyIhaBNR4"); +// export const Header = /*#__PURE__*/ componentQrl(_qrl_Header_component_J4uyIhaBNR4); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,OAAO,MAAM,uBAAS,gDAKnB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAEA,OAAO,MAAM,uBAAS,gDAKnB\"}") ============================= test.tsx_Header_component_div_onClick_i7ekvWH3674.tsx (ENTRY POINT)== export const Header_component_div_onClick_i7ekvWH3674 = (ctx)=>console.log(ctx); diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_3.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_3.snap index 02ea59792c4..2b70007b526 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_3.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_3.snap @@ -20,14 +20,16 @@ export const App = () => { ============================= test.tsx_App_Header_component_B9F3YeqcO1w.tsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; +// const _qrl_App_Header_component_div_onClick_aO7uI7Iw6oQ = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_Header_component_div_onClick_aO7uI7Iw6oQ"), "App_Header_component_div_onClick_aO7uI7Iw6oQ"); +// export const App_Header_component_B9F3YeqcO1w = ()=>{ console.log("mount"); return
; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;gDAG2B;IACzB,QAAQ,GAAG,CAAC;IACZ,QACE,IAAI;AAEP\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;gDAG2B;IACzB,QAAQ,GAAG,CAAC;IACZ,QACE,IAAI;AAEP\"}") /* { "origin": "test.tsx", @@ -81,14 +83,16 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_App_Header_component_B9F3YeqcO1w = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_Header_component_B9F3YeqcO1w"), "App_Header_component_B9F3YeqcO1w"); +// export const App = ()=>{ const Header = /*#__PURE__*/ componentQrl(_qrl_App_Header_component_B9F3YeqcO1w); return Header; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,OAAO,MAAM,MAAM;IAClB,MAAM,uBAAS;IAMf,OAAO;AACR,EAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAEA,OAAO,MAAM,MAAM;IAClB,MAAM,uBAAS;IAMf,OAAO;AACR,EAAG\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_4.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_4.snap index 8c239a36418..408d0deb24e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_4.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_4.snap @@ -20,14 +20,16 @@ export function App() { ============================= test.tsx_App_Header_component_B9F3YeqcO1w.tsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; +// const _qrl_App_Header_component_div_onClick_aO7uI7Iw6oQ = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_Header_component_div_onClick_aO7uI7Iw6oQ"), "App_Header_component_div_onClick_aO7uI7Iw6oQ"); +// export const App_Header_component_B9F3YeqcO1w = ()=>{ console.log("mount"); return
; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;gDAG2B;IACzB,QAAQ,GAAG,CAAC;IACZ,QACE,IAAI;AAEP\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;gDAG2B;IACzB,QAAQ,GAAG,CAAC;IACZ,QACE,IAAI;AAEP\"}") /* { "origin": "test.tsx", @@ -81,14 +83,16 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_App_Header_component_B9F3YeqcO1w = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_Header_component_B9F3YeqcO1w"), "App_Header_component_B9F3YeqcO1w"); +// export function App() { const Header = /*#__PURE__*/ componentQrl(_qrl_App_Header_component_B9F3YeqcO1w); return Header; } -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,OAAO,SAAS;IACf,MAAM,uBAAS;IAMf,OAAO;AACR\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAEA,OAAO,SAAS;IACf,MAAM,uBAAS;IAMf,OAAO;AACR\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_5.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_5.snap index c4bbc3a2a4e..af128f8f3cf 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_5.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_5.snap @@ -19,7 +19,9 @@ export const Header = component$(() => { ============================= test.tsx_Header_component_J4uyIhaBNR4.tsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; +// const _qrl_Header_component_div_onClick_i7ekvWH3674 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_div_onClick_i7ekvWH3674"), "Header_component_div_onClick_i7ekvWH3674"); +// export const Header_component_J4uyIhaBNR4 = ()=>{ return <>
console.log("1")}/> @@ -28,7 +30,7 @@ export const Header_component_J4uyIhaBNR4 = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;4CAEiC;IAChC,SACG;GACD,CAAC,IAAI,SAAS,CAAC,MAAQ,QAAQ,GAAG,CAAC,OAAO;GAC1C,CAAC,IAAI,yDAAwC;EAC9C;AAEF\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;4CAEiC;IAChC,SACG;GACD,CAAC,IAAI,SAAS,CAAC,MAAQ,QAAQ,GAAG,CAAC,OAAO;GAC1C,CAAC,IAAI,yDAAwC;EAC9C;AAEF\"}") /* { "origin": "test.tsx", @@ -53,11 +55,13 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_Header_component_J4uyIhaBNR4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_J4uyIhaBNR4"), "Header_component_J4uyIhaBNR4"); +// export const Header = /*#__PURE__*/ componentQrl(_qrl_Header_component_J4uyIhaBNR4); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,OAAO,MAAM,uBAAS,gDAOnB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAEA,OAAO,MAAM,uBAAS,gDAOnB\"}") ============================= test.tsx_Header_component_div_onClick_i7ekvWH3674.tsx (ENTRY POINT)== export const Header_component_div_onClick_i7ekvWH3674 = (ctx)=>console.log("2"); diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_6.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_6.snap index 2c69a4c6e5c..772108b7991 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_6.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_6.snap @@ -41,10 +41,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx == import { qrl } from "@qwik.dev/core"; +// export const sym1 = /*#__PURE__*/ qrl(()=>import("./test.tsx_sym1_aXUrPXX5Lak"), "sym1_aXUrPXX5Lak"); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";AAEA,OAAO,MAAM,wFAAoC\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AAEA,OAAO,MAAM,wFAAoC\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_7.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_7.snap index 180142a4f18..c6a715ab030 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_7.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_7.snap @@ -24,14 +24,16 @@ const App = component$(() => { ============================= test.tsx_Header_component_J4uyIhaBNR4.tsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; +// const _qrl_Header_component_div_onClick_i7ekvWH3674 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_div_onClick_i7ekvWH3674"), "Header_component_div_onClick_i7ekvWH3674"); +// export const Header_component_J4uyIhaBNR4 = ()=>{ console.log("mount"); return
; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;4CAGiC;IAChC,QAAQ,GAAG,CAAC;IACZ,QACE,IAAI;AAEN\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;4CAGiC;IAChC,QAAQ,GAAG,CAAC;IACZ,QACE,IAAI;AAEN\"}") /* { "origin": "test.tsx", @@ -56,22 +58,25 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); const _qrl_Header_component_J4uyIhaBNR4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_J4uyIhaBNR4"), "Header_component_J4uyIhaBNR4"); +// export const Header = /*#__PURE__*/ componentQrl(_qrl_Header_component_J4uyIhaBNR4); /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAGA,OAAO,MAAM,uBAAS,gDAKlB;cAEQ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;AAGA,OAAO,MAAM,uBAAS,gDAKlB;cAEQ\"}") ============================= test.tsx_App_component_ckEPmXZlub0.tsx (ENTRY POINT)== import { Header } from "./test"; +// export const App_component_ckEPmXZlub0 = ()=>{ return
; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";yCAUuB;IACtB,QACE;AAEH\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;yCAUuB;IACtB,QACE;AAEH\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_8.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_8.snap index 5d329918951..f249a60dfad 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_8.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_8.snap @@ -22,13 +22,15 @@ export const Header = component$(() => { ============================= test.tsx_Header_component_J4uyIhaBNR4.tsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; +// const _qrl_Header_component_1_2B8d0oH9ZWc = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_1_2B8d0oH9ZWc"), "Header_component_1_2B8d0oH9ZWc"); +// export const Header_component_J4uyIhaBNR4 = ()=>{ return _qrl_Header_component_1_2B8d0oH9ZWc; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;4CAGiC;IAChC;AAQD\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;4CAGiC;IAChC;AAQD\"}") /* { "origin": "test.tsx", @@ -52,6 +54,7 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx_Header_component_1_2B8d0oH9ZWc.tsx (ENTRY POINT)== import { Header } from "./test"; +// export const Header_component_1_2B8d0oH9ZWc = (hola)=>{ const hola = this; hola.nothere.stuff[global]; @@ -59,7 +62,7 @@ export const Header_component_1_2B8d0oH9ZWc = (hola)=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";8CAIU,CAAC;IACT,MAAM,OAAO,IAAI;IAEH,KAAK,OAAO,CAAC,KAAK,CAAC,OAAO;IACxC,QACE;AAEH\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;8CAIU,CAAC;IACT,MAAM,OAAO,IAAI;IAEH,KAAK,OAAO,CAAC,KAAK,CAAC,OAAO;IACxC,QACE;AAEH\"}") /* { "origin": "test.tsx", @@ -87,11 +90,13 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_Header_component_J4uyIhaBNR4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_J4uyIhaBNR4"), "Header_component_J4uyIhaBNR4"); +// export const Header = /*#__PURE__*/ componentQrl(_qrl_Header_component_J4uyIhaBNR4); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,uBAAS,gDASnB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAGA,OAAO,MAAM,uBAAS,gDASnB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_9.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_9.snap index fdbe976954e..0d840c4f8e7 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_9.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_9.snap @@ -56,6 +56,7 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx == import { qrl } from "@qwik.dev/core"; +// /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_WjUaUQN7Oxg"), "Header_WjUaUQN7Oxg"); diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_build_server.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_build_server.snap index c4d6651f3f0..f8ec04a9d30 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_build_server.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_build_server.snap @@ -42,15 +42,18 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_s_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "s_ckEPmXZlub0"); +// export const functionThatNeedsWindow = ()=>{}; export const App = /*#__PURE__*/ componentQrl(_qrl_s_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAQA,OAAO,MAAM,0BAA0B,KAMvC,EAAE;AAEF,OAAO,MAAM,oBAAM,iCAehB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAQA,OAAO,MAAM,0BAA0B,KAMvC,EAAE;AAEF,OAAO,MAAM,oBAAM,iCAehB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.tsx (ENTRY POINT)== import { mongodb } from "mondodb"; +// export const s_ckEPmXZlub0 = ()=>{ useMount$(()=>{ console.log('server', mongodb()); @@ -62,7 +65,7 @@ export const s_ckEPmXZlub0 = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";6BAgB8B;IAC7B,UAAU;QAER,QAAQ,GAAG,CAAC,UAAU;IAKxB;IACA,QACE,IAAI;GACJ,EAAe,EAAE,MAAM,EAAE,GAAG;GAC5B,OAAsB;EACvB,EAAE;AAEJ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;6BAgB8B;IAC7B,UAAU;QAER,QAAQ,GAAG,CAAC,UAAU;IAKxB;IACA,QACE,IAAI;GACJ,EAAe,EAAE,MAAM,EAAE,GAAG;GAC5B,OAAsB;EACvB,EAAE;AAEJ\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_capture_imports.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_capture_imports.snap index 4210d572e04..3bb640f1f9d 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_capture_imports.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_capture_imports.snap @@ -20,19 +20,22 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +// export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAMA,OAAO,MAAM,oBAAM,6CAGjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAMA,OAAO,MAAM,oBAAM,6CAGjB\"}") ============================= test.tsx_App_component_useStyles_t35nSa5UV7U.js (ENTRY POINT)== import css1 from "./global.css"; import css2 from "./style.css"; +// export const App_component_useStyles_t35nSa5UV7U = `${css1}${css2}`; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;mDAOY,GAAG,OAAO,MAAM\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;mDAOY,GAAG,OAAO,MAAM\"}") /* { "origin": "test.tsx", @@ -57,15 +60,17 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { qrl } from "@qwik.dev/core"; import { useStylesQrl } from "@qwik.dev/core"; +// const _qrl_App_component_useStyles_1_xBK4W0ZKWe8 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_useStyles_1_xBK4W0ZKWe8"), "App_component_useStyles_1_xBK4W0ZKWe8"); const _qrl_App_component_useStyles_t35nSa5UV7U = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_useStyles_t35nSa5UV7U"), "App_component_useStyles_t35nSa5UV7U"); +// export const App_component_ckEPmXZlub0 = ()=>{ useStylesQrl(_qrl_App_component_useStyles_t35nSa5UV7U); useStylesQrl(_qrl_App_component_useStyles_1_xBK4W0ZKWe8); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;yCAM8B;IAC7B;IACA;AACD\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;yCAM8B;IAC7B;IACA;AACD\"}") /* { "origin": "test.tsx", @@ -89,10 +94,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx_App_component_useStyles_1_xBK4W0ZKWe8.js (ENTRY POINT)== import css3 from "./style.css"; +// export const App_component_useStyles_1_xBK4W0ZKWe8 = css3; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";qDAQY\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;qDAQY\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_capturing_fn_class.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_capturing_fn_class.snap index 43add4115b4..86a70126c56 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_capturing_fn_class.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_capturing_fn_class.snap @@ -28,21 +28,25 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +// export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CAcjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAGA,OAAO,MAAM,oBAAM,6CAcjB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; +// const _qrl_App_component_1_w0t0o3QMovU = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_1_w0t0o3QMovU"), "App_component_1_w0t0o3QMovU"); +// export const App_component_ckEPmXZlub0 = ()=>{ return _qrl_App_component_1_w0t0o3QMovU; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;yCAG8B;IAO7B;AAOD\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;yCAG8B;IAO7B;AAOD\"}") /* { "origin": "test.tsx", @@ -66,6 +70,7 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx_App_component_1_w0t0o3QMovU.js (ENTRY POINT)== import { _jsxSorted } from "@qwik.dev/core"; +// export const App_component_1_w0t0o3QMovU = ()=>{ hola(); new Thing(); @@ -73,7 +78,7 @@ export const App_component_1_w0t0o3QMovU = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";2CAUU;IACR;IACA,IAAI;IACJ,qBACC,WAAC;AAEH\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;2CAUU;IACR;IACA,IAAI;IACJ,qBACC,WAAC;AAEH\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_class_name.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_class_name.snap index 526da36896a..53f6bae9528 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_class_name.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_class_name.snap @@ -30,16 +30,19 @@ export const App2 = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_App2_component_3yveMqbQ3Fs = /*#__PURE__*/ qrl(()=>import("./test.tsx_App2_component_3yveMqbQ3Fs.js"), "App2_component_3yveMqbQ3Fs"); +// export const App2 = /*#__PURE__*/ componentQrl(_qrl_App2_component_3yveMqbQ3Fs); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,qBAAO,8CAgBjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAGA,OAAO,MAAM,qBAAO,8CAgBjB\"}") ============================= test.tsx_App2_component_3yveMqbQ3Fs.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; import { _jsxSorted } from "@qwik.dev/core"; import { _wrapProp } from "@qwik.dev/core"; +// export const App2_component_3yveMqbQ3Fs = ()=>{ const signal = useSignal(); const computed = signal.value + 'foo'; @@ -72,7 +75,7 @@ export const App2_component_3yveMqbQ3Fs = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;0CAG+B;IAC9B,MAAM,SAAS;IACf,MAAM,WAAW,OAAO,KAAK,GAAG;IAChC,qBACC;sBACC,WAAC;YAAI,SAAU;;sBACf,WAAC;YAAI,OAAS,YAAE;;sBAChB,WAAC;YAAI,SAAW;;sBAChB,WAAC;YAAI,SAAW;;sBAEhB,WAAC;YAAI,WAAU;;sBACf,WAAC;YAAI,SAAS,YAAE;;sBAChB,WAAC;YAAI,WAAW;;sBAChB,WAAC;YAAI,WAAW;;;AAGnB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;0CAG+B;IAC9B,MAAM,SAAS;IACf,MAAM,WAAW,OAAO,KAAK,GAAG;IAChC,qBACC;sBACC,WAAC;YAAI,SAAU;;sBACf,WAAC;YAAI,OAAS,YAAE;;sBAChB,WAAC;YAAI,SAAW;;sBAChB,WAAC;YAAI,SAAW;;sBAEhB,WAAC;YAAI,WAAU;;sBACf,WAAC;YAAI,SAAS,YAAE;;sBAChB,WAAC;YAAI,WAAW;;sBAChB,WAAC;YAAI,WAAW;;;AAGnB\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_component_with_event_listeners_inside_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_component_with_event_listeners_inside_loop.snap index b548689b8e4..8a56938d45f 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_component_with_event_listeners_inside_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_component_with_event_listeners_inside_loop.snap @@ -108,21 +108,24 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +// export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAEA,OAAO,MAAM,oBAAM,6CA+FZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAEA,OAAO,MAAM,oBAAM,6CA+FZ\"}") ============================= test.tsx_App_component_loopForIn_span_q_e_click_adzBGickx1U.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; +// export const App_component_loopForIn_span_q_e_click_adzBGickx1U = (_, _1, key)=>{ const cart = _captures[0], results = _captures[1]; cart.push(results[key]); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";kEAmDwB,QAHL;;IAIH,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;kEAmDwB,QAHL;;IAIH,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI\"}") /* { "origin": "test.tsx", @@ -155,13 +158,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx_App_component_loopWhile_span_q_e_click_05kCMrZVn5E.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; +// export const App_component_loopWhile_span_q_e_click_05kCMrZVn5E = (_, _1, i)=>{ const cart = _captures[0], results = _captures[1]; cart.push(results[i]); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";kEAmEwB,QAHT;;IAIC,KAAK,IAAI,CAAC,OAAO,CAAC,EAAE\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;kEAmEwB,QAHT;;IAIC,KAAK,IAAI,CAAC,OAAO,CAAC,EAAE\"}") /* { "origin": "test.tsx", @@ -194,13 +198,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx_App_component_loopForOf_span_q_e_click_zlNGHYu926I.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; +// export const App_component_loopForOf_span_q_e_click_zlNGHYu926I = (_, _1, item)=>{ const cart = _captures[0]; cart.push(item); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";kEAoCwB,QAHL;;IAIH,KAAK,IAAI,CAAC\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;kEAoCwB,QAHL;;IAIH,KAAK,IAAI,CAAC\"}") /* { "origin": "test.tsx", @@ -236,14 +241,17 @@ import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; import { useStore } from "@qwik.dev/core"; +// const _hf0 = (p0, p1)=>p1[p0]; const _hf0_str = "p1[p0]"; +// const i_05kCMrZVn5E = ()=>import("./test.tsx_App_component_loopWhile_span_q_e_click_05kCMrZVn5E"); const i_PbCYbPM6etI = ()=>import("./test.tsx_App_component_loopForI_span_q_e_click_PbCYbPM6etI"); const i_UB6Fs5a3bd8 = ()=>import("./test.tsx_App_component_div_button_q_e_click_UB6Fs5a3bd8"); const i_Wau7C836nf0 = ()=>import("./test.tsx_App_component_loopArrowFn_span_q_e_click_Wau7C836nf0"); const i_adzBGickx1U = ()=>import("./test.tsx_App_component_loopForIn_span_q_e_click_adzBGickx1U"); const i_zlNGHYu926I = ()=>import("./test.tsx_App_component_loopForOf_span_q_e_click_zlNGHYu926I"); +// export const App_component_ckEPmXZlub0 = ()=>{ const cart = useStore([]); const results = useSignal([ @@ -337,7 +345,7 @@ export const App_component_ckEPmXZlub0 = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;uBAyBe,EAAO,IAAG;;;;;;;;yCAvBK;IACxB,MAAM,OAAO,SAAmB,EAAE;IAClC,MAAM,UAAU,UAAU;QAAC;KAAM;;;;;;;;;;;;;;;;;;;;;;IACjC,SAAS,YAAY,OAAiB;QACpC,OAAO,QAAQ,GAAG,CAAC,CAAC,qBAClB,WAAC;gBACC,WAAQ;uBAFQ;qBAMf;IAGP;IACA,SAAS,SAAS,OAAiB;QACjC,MAAM,QAAQ,EAAE;QAChB,IAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,MAAM,EAAE,IAClC,MAAM,IAAI,eACR,WAAC;YACC,WAAQ;mBAHL;;;;;QAWT,OAAO;IACT;IACA,SAAS,UAAU,OAAiB;QAClC,MAAM,QAAQ,EAAE;QAChB,KAAK,MAAM,QAAQ,QACjB,MAAM,IAAI,eACR,WAAC;YACC,WAAQ;mBAHH;iBAOJ;QAIP,OAAO;IACT;IACA,SAAS,UAAU,OAAiB;QAClC,MAAM,QAAQ,EAAE;QAChB,IAAK,MAAM,OAAO,QAChB,MAAM,IAAI,eACR,WAAC;YACC,WAAQ;mBAHH;;;;;QAWX,OAAO;IACT;IACA,SAAS,UAAU,OAAiB;QAClC,MAAM,QAAQ,EAAE;QAChB,IAAI,IAAI;QACR,MAAO,IAAI,QAAQ,MAAM,CAAE;YACzB,MAAM,IAAI,eACR,WAAC;gBACC,WAAQ;uBAHP;;;;;YAUL;QACF;QACA,OAAO;IACT;IACA,qBACE,WAAC;QACE,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,qBAClB,WAAC;gBAEC,WAAQ;uBAHQ;;gBAEhB,IAAG;eAKF;QAGJ,YAAY,QAAQ,KAAK;QACzB,SAAS,QAAQ,KAAK;QACtB,UAAU,QAAQ,KAAK;QACvB,UAAU,QAAQ,KAAK;QACvB,UAAU,QAAQ,KAAK;;AAG9B\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;uBAyBe,EAAO,IAAG;;;;;;;;;;yCAvBK;IACxB,MAAM,OAAO,SAAmB,EAAE;IAClC,MAAM,UAAU,UAAU;QAAC;KAAM;;;;;;;;;;;;;;;;;;;;;;IACjC,SAAS,YAAY,OAAiB;QACpC,OAAO,QAAQ,GAAG,CAAC,CAAC,qBAClB,WAAC;gBACC,WAAQ;uBAFQ;qBAMf;IAGP;IACA,SAAS,SAAS,OAAiB;QACjC,MAAM,QAAQ,EAAE;QAChB,IAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,MAAM,EAAE,IAClC,MAAM,IAAI,eACR,WAAC;YACC,WAAQ;mBAHL;;;;;QAWT,OAAO;IACT;IACA,SAAS,UAAU,OAAiB;QAClC,MAAM,QAAQ,EAAE;QAChB,KAAK,MAAM,QAAQ,QACjB,MAAM,IAAI,eACR,WAAC;YACC,WAAQ;mBAHH;iBAOJ;QAIP,OAAO;IACT;IACA,SAAS,UAAU,OAAiB;QAClC,MAAM,QAAQ,EAAE;QAChB,IAAK,MAAM,OAAO,QAChB,MAAM,IAAI,eACR,WAAC;YACC,WAAQ;mBAHH;;;;;QAWX,OAAO;IACT;IACA,SAAS,UAAU,OAAiB;QAClC,MAAM,QAAQ,EAAE;QAChB,IAAI,IAAI;QACR,MAAO,IAAI,QAAQ,MAAM,CAAE;YACzB,MAAM,IAAI,eACR,WAAC;gBACC,WAAQ;uBAHP;;;;;YAUL;QACF;QACA,OAAO;IACT;IACA,qBACE,WAAC;QACE,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,qBAClB,WAAC;gBAEC,WAAQ;uBAHQ;;gBAEhB,IAAG;eAKF;QAGJ,YAAY,QAAQ,KAAK;QACzB,SAAS,QAAQ,KAAK;QACtB,UAAU,QAAQ,KAAK;QACvB,UAAU,QAAQ,KAAK;QACvB,UAAU,QAAQ,KAAK;;AAG9B\"}") /* { "origin": "test.tsx", @@ -361,13 +369,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx_App_component_loopForI_span_q_e_click_PbCYbPM6etI.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; +// export const App_component_loopForI_span_q_e_click_PbCYbPM6etI = (_, _1, i)=>{ const cart = _captures[0], results = _captures[1]; cart.push(results[i]); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";iEAqBwB,QAHP;;IAID,KAAK,IAAI,CAAC,OAAO,CAAC,EAAE\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;iEAqBwB,QAHP;;IAID,KAAK,IAAI,CAAC,OAAO,CAAC,EAAE\"}") /* { "origin": "test.tsx", @@ -400,13 +409,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx_App_component_div_button_q_e_click_UB6Fs5a3bd8.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; +// export const App_component_div_button_q_e_click_UB6Fs5a3bd8 = (_, _1, item)=>{ const cart = _captures[0]; cart.push(item); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";8DAmFwB,QAHM;;IAId,KAAK,IAAI,CAAC\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;8DAmFwB,QAHM;;IAId,KAAK,IAAI,CAAC\"}") /* { "origin": "test.tsx", @@ -438,13 +448,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx_App_component_loopArrowFn_span_q_e_click_Wau7C836nf0.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; +// export const App_component_loopArrowFn_span_q_e_click_Wau7C836nf0 = (_, _1, item)=>{ const cart = _captures[0]; cart.push(item); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";oEAQsB,QAFM;;IAGd,KAAK,IAAI,CAAC\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;oEAQsB,QAFM;;IAGd,KAAK,IAAI,CAAC\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_custom_inlined_functions.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_custom_inlined_functions.snap index 3dd073cc053..c83b51116a9 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_custom_inlined_functions.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_custom_inlined_functions.snap @@ -35,8 +35,10 @@ export const Lightweight = (props) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { wrap, useEffect } from '@qwik.dev/core'; +// const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); const _qrl_Lightweight_useMemo_UIcxVTQF1a8 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Lightweight_useMemo_UIcxVTQF1a8"), "Lightweight_useMemo_UIcxVTQF1a8"); +// export const useMemoQrl = (qrt)=>{ useEffect(qrt); }; @@ -47,17 +49,18 @@ export const Lightweight = (props)=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AACA,SAAkC,IAAI,EAAE,SAAS,QAAQ,iBAAiB;;;AAE1E,OAAO,MAAM,aAAa,CAAC;IAC1B,UAAU;AACX,EAAE;AAEF,OAAO,MAAM,WAAW,KAAK,YAAY;AAEzC,OAAO,MAAM,oBAAM,6CAQhB;AAEH,OAAO,MAAM,cAAc,CAAC;IAC3B;AAGD,EAAE\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AACA,SAAkC,IAAI,EAAE,SAAS,QAAQ,iBAAiB;;;;;AAE1E,OAAO,MAAM,aAAa,CAAC;IAC1B,UAAU;AACX,EAAE;AAEF,OAAO,MAAM,WAAW,KAAK,YAAY;AAEzC,OAAO,MAAM,oBAAM,6CAQhB;AAEH,OAAO,MAAM,cAAc,CAAC;IAC3B;AAGD,EAAE\"}") ============================= test.tsx_App_component_useMemo_6Sc9KVki3Y0.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; +// export const App_component_useMemo_6Sc9KVki3Y0 = ()=>{ const state = _captures[0]; console.log(state.count); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";iDAWU;;IACR,QAAQ,GAAG,CAAC,MAAM,KAAK\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;iDAWU;;IACR,QAAQ,GAAG,CAAC,MAAM,KAAK\"}") /* { "origin": "test.tsx", @@ -114,8 +117,10 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { useMemoQrl } from "./test"; import { qrl } from "@qwik.dev/core"; import { useStore } from "@qwik.dev/core"; +// const i_6Sc9KVki3Y0 = ()=>import("./test.tsx_App_component_useMemo_6Sc9KVki3Y0"); const i_w0t0o3QMovU = ()=>import("./test.tsx_App_component_1_w0t0o3QMovU"); +// export const App_component_ckEPmXZlub0 = (props)=>{ const state = useStore({ count: 0 @@ -129,7 +134,7 @@ export const App_component_ckEPmXZlub0 = (props)=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;yCAS8B,CAAC;IAC9B,MAAM,QAAQ,SAAS;QAAC,OAAO;IAAC;IAChC;;;IAGA;;;AAGD\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;yCAS8B,CAAC;IAC9B,MAAM,QAAQ,SAAS;QAAC,OAAO;IAAC;IAChC;;;IAGA;;;AAGD\"}") /* { "origin": "test.tsx", @@ -158,13 +163,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _captures } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { _wrapProp } from "@qwik.dev/core"; +// export const App_component_1_w0t0o3QMovU = ()=>{ const state = _captures[0]; return /*#__PURE__*/ _jsxSorted("div", null, null, _wrapProp(state, "count"), 3, "u6_0"); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;2CAcU;;yBACR,WAAC,6BAAK\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;2CAcU;;yBACR,WAAC,6BAAK\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dead_code.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dead_code.snap index c487b019bf1..d8c38b12461 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dead_code.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dead_code.snap @@ -56,11 +56,13 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE"); +// export const Foo = /*#__PURE__*/ componentQrl(_qrl_Foo_component_HTDRsvUbLiE); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA,OAAO,MAAM,oBAAM,6CASjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAIA,OAAO,MAAM,oBAAM,6CASjB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export.snap index 02ae88c94ec..5677ec20373 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export.snap @@ -21,18 +21,21 @@ export default component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_slug_component_0AM8HPnkNs4 = /*#__PURE__*/ qrl(()=>import("./[[...slug]].tsx_slug_component_0AM8HPnkNs4.js"), "slug_component_0AM8HPnkNs4"); +// export default /*#__PURE__*/ componentQrl(_qrl_slug_component_0AM8HPnkNs4); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/routes/_repl/[id]/[[...slug]].tsx\"],\"names\":[],\"mappings\":\";;;AAIA,6BAAe,8CAKZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/routes/_repl/[id]/[[...slug]].tsx\"],\"names\":[],\"mappings\":\";;;;;AAIA,6BAAe,8CAKZ\"}") ============================= src/routes/_repl/[id]/[[...slug]].tsx_slug_component_div_q_e_click_bCwVPYSTQ0w.js (ENTRY POINT)== import { sibling } from "./sibling"; +// export const slug_component_div_q_e_click_bCwVPYSTQ0w = ()=>console.log(mongodb, sibling); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/routes/_repl/[id]/[[...slug]].tsx\"],\"names\":[],\"mappings\":\";wDAMiB,IAAM,QAAQ,GAAG,CAAC,SAAS\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/routes/_repl/[id]/[[...slug]].tsx\"],\"names\":[],\"mappings\":\";;wDAMiB,IAAM,QAAQ,GAAG,CAAC,SAAS\"}") /* { "origin": "src/routes/_repl/[id]/[[...slug]].tsx", @@ -57,7 +60,9 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/routes/_repl/[id]/[[...sl import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_slug_component_div_q_e_click_bCwVPYSTQ0w = /*#__PURE__*/ qrl(()=>import("./[[...slug]].tsx_slug_component_div_q_e_click_bCwVPYSTQ0w.js"), "slug_component_div_q_e_click_bCwVPYSTQ0w"); +// export const slug_component_0AM8HPnkNs4 = ()=>{ return /*#__PURE__*/ _jsxSorted("div", null, { "q-e:click": _qrl_slug_component_div_q_e_click_bCwVPYSTQ0w @@ -65,7 +70,7 @@ export const slug_component_0AM8HPnkNs4 = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/routes/_repl/[id]/[[...slug]].tsx\"],\"names\":[],\"mappings\":\";;;0CAI0B;IACzB,qBACC,WAAC;QAAI,WAAQ;;AAGf\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/routes/_repl/[id]/[[...slug]].tsx\"],\"names\":[],\"mappings\":\";;;;;0CAI0B;IACzB,qBACC,WAAC;QAAI,WAAQ;;AAGf\"}") /* { "origin": "src/routes/_repl/[id]/[[...slug]].tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export_index.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export_index.snap index 924a08a595b..4ba29355996 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export_index.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export_index.snap @@ -20,6 +20,7 @@ export default component$(() => { import { componentQrl } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; +// const mongo_component_div_q_e_click_jncbxvZVtWY = ()=>console.log(mongodb); const mongo_component_ouWLj4jA2oI = ()=>{ return
@@ -28,7 +29,7 @@ const mongo_component_ouWLj4jA2oI = ()=>{ export default /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(mongo_component_ouWLj4jA2oI, "mongo_component_ouWLj4jA2oI")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/components/mongo/index.tsx\"],\"names\":[],\"mappings\":\";;kDAKiB,IAAM,QAAQ,GAAG,CAAC;oCAFT;IACzB,QACE,IAAI,6HAAsC;EAC3C,EAAE;AAEJ;AALA,6BAAe,mGAKZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/components/mongo/index.tsx\"],\"names\":[],\"mappings\":\";;;kDAKiB,IAAM,QAAQ,GAAG,CAAC;oCAFT;IACzB,QACE,IAAI,6HAAsC;EAC3C,EAAE;AAEJ;AALA,6BAAe,mGAKZ\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export_invalid_ident.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export_invalid_ident.snap index ef26b3c834e..0dccf4d512c 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export_invalid_ident.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_default_export_invalid_ident.snap @@ -46,22 +46,26 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/components/mongo/404.tsx\ import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl__404_component_zRvoWc98eqo = /*#__PURE__*/ qrl(()=>import("./404.tsx__404_component_zRvoWc98eqo"), "_404_component_zRvoWc98eqo"); +// export default /*#__PURE__*/ componentQrl(_qrl__404_component_zRvoWc98eqo); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/components/mongo/404.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,6BAAe,8CAKZ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/components/mongo/404.tsx\"],\"names\":[],\"mappings\":\";;;;;AAGA,6BAAe,8CAKZ\"}") ============================= src/components/mongo/404.tsx__404_component_zRvoWc98eqo.tsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; +// const _qrl__404_component_div_q_e_click_aMLnLWtkRhc = /*#__PURE__*/ qrl(()=>import("./404.tsx__404_component_div_q_e_click_aMLnLWtkRhc"), "_404_component_div_q_e_click_aMLnLWtkRhc"); +// export const _404_component_zRvoWc98eqo = ()=>{ return
; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/components/mongo/404.tsx\"],\"names\":[],\"mappings\":\";;0CAG0B;IACzB,QACE,IAAI,0DAAsC;EAC3C,EAAE;AAEJ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/src/components/mongo/404.tsx\"],\"names\":[],\"mappings\":\";;;;0CAG0B;IACzB,QACE,IAAI,0DAAsC;EAC3C,EAAE;AAEJ\"}") /* { "origin": "src/components/mongo/404.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_children.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_children.snap index 65508f0e74c..3c05454e9e4 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_children.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_children.snap @@ -59,6 +59,7 @@ import { _fnSignal } from "@qwik.dev/core"; import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; import { useStore, mutable } from '@qwik.dev/core'; import { dep } from './file'; +// const _hf0 = (p0)=>12 + p0.value; const _hf0_str = "12+p0.value"; const _hf1 = (p0)=>p0.address.city.name; @@ -114,7 +115,7 @@ const App_component_ckEPmXZlub0 = ()=>{ export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(App_component_ckEPmXZlub0, "App_component_ckEPmXZlub0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;AACA,SAAqB,QAAQ,EAAE,OAAO,QAAQ,iBAAiB;AAE/D,SAAQ,GAAG,QAAO,SAAS;mBAwBlB,KAAK,GAAO,KAAK;;mBACjB,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI;;mBACvB,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS;;0CAxBN,CAAC;IACtC,qBACC;sBACC,WAAC;YAAI;sBAAU;;sBACf,WAAC;YAAI;sBAAQ;;;AAGhB;AAPA,OAAO,MAAM,4BAAc,+GAOxB;kCAE2B;IAC7B,MAAM,SAAS,UAAU;IACzB,MAAM,QAAQ,SAAS,CAAC;IACxB,qBACC;sBACC,WAAC,mBAAI;sBACL,WAAC,mBAAK,CAAC,IAAI,CAAC;sBACZ,WAAC,mBAAK;sBACN,WAAC,mBAAK;sBACN,WAAC,mBAAK,CAAC,IAAI,EAAE,IAAI;sBACjB,WAAC,mBAAK,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW,KAAK;sBAC7C,WAAC,mBAAK;sBACN,WAAC,6BAAK;sBACN,WAAC;;;sBACD,WAAC;;;sBACD,WAAC;;;sBACD,WAAC,mBAAK;sBACN,WAAC,mBAAK,IAAI,KAAK;sBACf,WAAC,mBAAK,IAAI,KAAK,GAAG;sBAClB,WAAC,mBAAK;sBACN,WAAC,mBAAK,YAAY,KAAK;sBACvB,WAAC,mBAAK,YAAY,KAAK,GAAG;sBAC1B,WAAC,mBAAK,OAAO,KAAK;sBAClB,WAAC,mBAAK,OAAO,KAAK,GAAG;sBACrB,WAAC,mBAAK,QAAQ;sBACd,WAAC,mBAAK,OAAO,KAAK,GAAG;;AAGxB;AA5BA,OAAO,MAAM,oBAAM,+FA4BhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;AACA,SAAqB,QAAQ,EAAE,OAAO,QAAQ,iBAAiB;AAE/D,SAAQ,GAAG,QAAO,SAAS;;mBAwBlB,KAAK,GAAO,KAAK;;mBACjB,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI;;mBACvB,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS;;0CAxBN,CAAC;IACtC,qBACC;sBACC,WAAC;YAAI;sBAAU;;sBACf,WAAC;YAAI;sBAAQ;;;AAGhB;AAPA,OAAO,MAAM,4BAAc,+GAOxB;kCAE2B;IAC7B,MAAM,SAAS,UAAU;IACzB,MAAM,QAAQ,SAAS,CAAC;IACxB,qBACC;sBACC,WAAC,mBAAI;sBACL,WAAC,mBAAK,CAAC,IAAI,CAAC;sBACZ,WAAC,mBAAK;sBACN,WAAC,mBAAK;sBACN,WAAC,mBAAK,CAAC,IAAI,EAAE,IAAI;sBACjB,WAAC,mBAAK,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW,KAAK;sBAC7C,WAAC,mBAAK;sBACN,WAAC,6BAAK;sBACN,WAAC;;;sBACD,WAAC;;;sBACD,WAAC;;;sBACD,WAAC,mBAAK;sBACN,WAAC,mBAAK,IAAI,KAAK;sBACf,WAAC,mBAAK,IAAI,KAAK,GAAG;sBAClB,WAAC,mBAAK;sBACN,WAAC,mBAAK,YAAY,KAAK;sBACvB,WAAC,mBAAK,YAAY,KAAK,GAAG;sBAC1B,WAAC,mBAAK,OAAO,KAAK;sBAClB,WAAC,mBAAK,OAAO,KAAK,GAAG;sBACrB,WAAC,mBAAK,QAAQ;sBACd,WAAC,mBAAK,OAAO,KAAK,GAAG;;AAGxB;AA5BA,OAAO,MAAM,oBAAM,+FA4BhB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_cmp.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_cmp.snap index e50f593eadd..aa39ab28b34 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_cmp.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_cmp.snap @@ -57,6 +57,7 @@ import { inlinedQrl } from "@qwik.dev/core"; import { useStore, mutable } from '@qwik.dev/core'; import { dep } from './file'; import { Cmp } from './cmp'; +// const _hf0 = (p0)=>12 + p0.value; const _hf0_str = "12+p0.value"; const _hf1 = (p0)=>p0.address.city.name; @@ -100,7 +101,7 @@ const App_component_ckEPmXZlub0 = ()=>{ export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(App_component_ckEPmXZlub0, "App_component_ckEPmXZlub0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AACA,SAAqB,QAAQ,EAAE,OAAO,QAAQ,iBAAiB;AAE/D,SAAQ,GAAG,QAAO,SAAS;AAC3B,SAAQ,GAAG,QAAO,QAAQ;mBAgBF,KAAK,GAAO,KAAK;;mBAE/B,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI;;mBACf,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS;;kCAjBvB;IAC7B,MAAM,SAAS,UAAU;IACzB,MAAM,QAAQ,SAAS,CAAC;IACxB,qBACC,WAAC;QAmBA,QAAQ;QACR,cAAc,YAAY,KAAK;QAC/B,gBAAgB,YAAY,KAAK,GAAG;QAGpC,UAAU,OAAO,KAAK;QACtB,WAAW,OAAO,KAAK,GAAG;QAC1B,WAAW,QAAQ;QACnB,WAAW,OAAO,KAAK,GAAG;;QA1B1B,YAAW;QACX,aAAa,CAAC,IAAI,CAAC;QACnB,cAAc;QACd,eAAe;QACf,YAAY,CAAC,IAAI,EAAE,IAAI;QACvB,aAAa,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW,KAAK;QAEpD,QAAQ;QACR,WAAW,YAAE;QACb,mBAAmB;;;QAEnB,KAAK;;;QACL,aAAa;;;QAEb,KAAK;QACL,WAAW,IAAI,KAAK;QACpB,aAAa,IAAI,KAAK,GAAG;;AAa5B;AAlCA,OAAO,MAAM,oBAAM,+FAkChB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AACA,SAAqB,QAAQ,EAAE,OAAO,QAAQ,iBAAiB;AAE/D,SAAQ,GAAG,QAAO,SAAS;AAC3B,SAAQ,GAAG,QAAO,QAAQ;;mBAgBF,KAAK,GAAO,KAAK;;mBAE/B,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI;;mBACf,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS;;kCAjBvB;IAC7B,MAAM,SAAS,UAAU;IACzB,MAAM,QAAQ,SAAS,CAAC;IACxB,qBACC,WAAC;QAmBA,QAAQ;QACR,cAAc,YAAY,KAAK;QAC/B,gBAAgB,YAAY,KAAK,GAAG;QAGpC,UAAU,OAAO,KAAK;QACtB,WAAW,OAAO,KAAK,GAAG;QAC1B,WAAW,QAAQ;QACnB,WAAW,OAAO,KAAK,GAAG;;QA1B1B,YAAW;QACX,aAAa,CAAC,IAAI,CAAC;QACnB,cAAc;QACd,eAAe;QACf,YAAY,CAAC,IAAI,EAAE,IAAI;QACvB,aAAa,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW,KAAK;QAEpD,QAAQ;QACR,WAAW,YAAE;QACb,mBAAmB;;;QAEnB,KAAK;;;QACL,aAAa;;;QAEb,KAAK;QACL,WAAW,IAAI,KAAK;QACpB,aAAa,IAAI,KAAK,GAAG;;AAa5B;AAlCA,OAAO,MAAM,oBAAM,+FAkChB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_complext_children.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_complext_children.snap index 742b7467ad0..5468c6b003d 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_complext_children.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_complext_children.snap @@ -33,6 +33,7 @@ import { _jsxSorted } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; import { useStore } from '@qwik.dev/core'; +// const App_component_ckEPmXZlub0 = ()=>{ useSignal(0); const store = useStore({}); @@ -47,7 +48,7 @@ const App_component_ckEPmXZlub0 = ()=>{ export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(App_component_ckEPmXZlub0, "App_component_ckEPmXZlub0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AACA,SAAqB,QAAQ,QAAiB,iBAAiB;kCAIjC;IACd,UAAU;IACzB,MAAM,QAAQ,SAAS,CAAC;IACxB,qBACC,gDACC,WAAC;QAAG,IAAG;OACL,OAAO,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,iBACxC,WAAC;YACC;YAAI;YAAI;;AAMd;AAdA,OAAO,MAAM,oBAAM,+FAchB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AACA,SAAqB,QAAQ,QAAiB,iBAAiB;;kCAIjC;IACd,UAAU;IACzB,MAAM,QAAQ,SAAS,CAAC;IACxB,qBACC,gDACC,WAAC;QAAG,IAAG;OACL,OAAO,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,iBACxC,WAAC;YACC;YAAI;YAAI;;AAMd;AAdA,OAAO,MAAM,oBAAM,+FAchB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_div.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_div.snap index 9a8ed973330..a765ac67528 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_div.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_div.snap @@ -68,6 +68,7 @@ import { inlinedQrl } from "@qwik.dev/core"; import { useStore, mutable } from '@qwik.dev/core'; import { dep } from './file'; import styles from './styles.module.css'; +// const _hf0 = (p0)=>12 + p0.value; const _hf0_str = "12+p0.value"; const _hf1 = (p0)=>p0.address.city.name; @@ -120,7 +121,7 @@ const App_component_ckEPmXZlub0 = (props)=>{ export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(App_component_ckEPmXZlub0, "App_component_ckEPmXZlub0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AACA,SAAqB,QAAQ,EAAE,OAAO,QAAQ,iBAAiB;AAE/D,SAAQ,GAAG,QAAO,SAAS;AAC3B,OAAO,YAAY,sBAAsB;mBA0BjB,KAAK,GAAO,KAAK;;mBAE/B,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI;;mBACf,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS;;kCA3BvB,CAAC;IAC9B,MAAM,SAAS,UAAU;IACzB,MAAM,QAAQ,SAAS,CAAC;IACxB,MAAM,QAAQ,MAAM,OAAO,CAAC,KAAK;IAEjC,qBACC,WAAC;QACA,OAAO;YACN,MAAM,QAAQ,MAAM;YACpB,KAAK,QAAQ,MAAM;YACnB,SAAS;YACT,QAAQ;QACT;QAqBA,QAAQ;QACR,cAAc,YAAY,KAAK;QAC/B,gBAAgB,YAAY,KAAK,GAAG;QAGpC,UAAU,OAAO,KAAK;QACtB,WAAW,OAAO,KAAK,GAAG;QAC1B,WAAW,QAAQ;QACnB,WAAW,OAAO,KAAK,GAAG;QA3B1B,gBAAgB,OAAO,QAAQ;;QAD/B,aAAa,OAAO,GAAG;QAEvB,YAAW;QACX,aAAa,CAAC,IAAI,CAAC;QACnB,cAAc;QACd,eAAe;QACf,YAAY,CAAC,IAAI,EAAE,IAAI;QACvB,aAAa,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW,KAAK;QAEpD,QAAQ;QACR,WAAW,YAAE;QACb,mBAAmB;;;QAEnB,KAAK;;;QACL,aAAa;;;QAEb,KAAK;QACL,WAAW,IAAI,KAAK;QACpB,aAAa,IAAI,KAAK,GAAG;;AAc5B;AA7CA,OAAO,MAAM,oBAAM,+FA6ChB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AACA,SAAqB,QAAQ,EAAE,OAAO,QAAQ,iBAAiB;AAE/D,SAAQ,GAAG,QAAO,SAAS;AAC3B,OAAO,YAAY,sBAAsB;;mBA0BjB,KAAK,GAAO,KAAK;;mBAE/B,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI;;mBACf,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS;;kCA3BvB,CAAC;IAC9B,MAAM,SAAS,UAAU;IACzB,MAAM,QAAQ,SAAS,CAAC;IACxB,MAAM,QAAQ,MAAM,OAAO,CAAC,KAAK;IAEjC,qBACC,WAAC;QACA,OAAO;YACN,MAAM,QAAQ,MAAM;YACpB,KAAK,QAAQ,MAAM;YACnB,SAAS;YACT,QAAQ;QACT;QAqBA,QAAQ;QACR,cAAc,YAAY,KAAK;QAC/B,gBAAgB,YAAY,KAAK,GAAG;QAGpC,UAAU,OAAO,KAAK;QACtB,WAAW,OAAO,KAAK,GAAG;QAC1B,WAAW,QAAQ;QACnB,WAAW,OAAO,KAAK,GAAG;QA3B1B,gBAAgB,OAAO,QAAQ;;QAD/B,aAAa,OAAO,GAAG;QAEvB,YAAW;QACX,aAAa,CAAC,IAAI,CAAC;QACnB,cAAc;QACd,eAAe;QACf,YAAY,CAAC,IAAI,EAAE,IAAI;QACvB,aAAa,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW,KAAK;QAEpD,QAAQ;QACR,WAAW,YAAE;QACb,mBAAmB;;;QAEnB,KAAK;;;QACL,aAAa;;;QAEb,KAAK;QACL,WAAW,IAAI,KAAK;QACpB,aAAa,IAAI,KAAK,GAAG;;AAc5B;AA7CA,OAAO,MAAM,oBAAM,+FA6ChB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_multiple_children.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_multiple_children.snap index ea8215aa8fe..28fc4e30297 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_multiple_children.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_multiple_children.snap @@ -50,6 +50,7 @@ import { inlinedQrl } from "@qwik.dev/core"; import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; import { useStore, mutable } from '@qwik.dev/core'; import { dep } from './file'; +// const _hf0 = (p0)=>12 + p0.value; const _hf0_str = "12+p0.value"; const _hf1 = (p0)=>p0.address.city.name; @@ -152,7 +153,7 @@ const App_component_ckEPmXZlub0 = ()=>{ export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(App_component_ckEPmXZlub0, "App_component_ckEPmXZlub0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;AACA,SAAqB,QAAQ,EAAE,OAAO,QAAQ,iBAAiB;AAE/D,SAAQ,GAAG,QAAO,SAAS;mBAeZ,KAAK,GAAO,KAAK;;mBACjB,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI;;mBACvB,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS;;kCAfpB;IAC7B,MAAM,SAAS,UAAU;IACzB,MAAM,QAAQ,SAAS,CAAC;IACxB,qBACC;sBACC,WAAC,mBAAI;sBACL,WAAC;YAAI;YAAO,CAAC,IAAI,CAAC;;sBAClB,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;YAAO,CAAC,IAAI,EAAE,IAAI;;sBACvB,WAAC;YAAI;YAAO,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW,KAAK;;sBACnD,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;sBAAO;;sBACZ,WAAC;YAAI;;;;;sBACL,WAAC;YAAI;;;;;sBACL,WAAC;YAAI;;;;;sBACL,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;YAAO,IAAI,KAAK;;sBACrB,WAAC;YAAI;YAAO,IAAI,KAAK,GAAG;;sBACxB,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;YAAO,YAAY,KAAK;;sBAC7B,WAAC;YAAI;YAAO,YAAY,KAAK,GAAG;;sBAChC,WAAC;YAAI;YAAO,OAAO,KAAK;;sBACxB,WAAC;YAAI;YAAO,OAAO,KAAK,GAAG;;sBAC3B,WAAC;YAAI;YAAO,QAAQ;;sBACpB,WAAC;YAAI;YAAO,OAAO,KAAK,GAAG;;;AAG9B;AA5BA,OAAO,MAAM,oBAAM,+FA4BhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;AACA,SAAqB,QAAQ,EAAE,OAAO,QAAQ,iBAAiB;AAE/D,SAAQ,GAAG,QAAO,SAAS;;mBAeZ,KAAK,GAAO,KAAK;;mBACjB,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI;;mBACvB,GAAM,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS;;kCAfpB;IAC7B,MAAM,SAAS,UAAU;IACzB,MAAM,QAAQ,SAAS,CAAC;IACxB,qBACC;sBACC,WAAC,mBAAI;sBACL,WAAC;YAAI;YAAO,CAAC,IAAI,CAAC;;sBAClB,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;YAAO,CAAC,IAAI,EAAE,IAAI;;sBACvB,WAAC;YAAI;YAAO,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,WAAW,KAAK;;sBACnD,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;sBAAO;;sBACZ,WAAC;YAAI;;;;;sBACL,WAAC;YAAI;;;;;sBACL,WAAC;YAAI;;;;;sBACL,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;YAAO,IAAI,KAAK;;sBACrB,WAAC;YAAI;YAAO,IAAI,KAAK,GAAG;;sBACxB,WAAC;YAAI;YAAO;;sBACZ,WAAC;YAAI;YAAO,YAAY,KAAK;;sBAC7B,WAAC;YAAI;YAAO,YAAY,KAAK,GAAG;;sBAChC,WAAC;YAAI;YAAO,OAAO,KAAK;;sBACxB,WAAC;YAAI;YAAO,OAAO,KAAK,GAAG;;sBAC3B,WAAC;YAAI;YAAO,QAAQ;;sBACpB,WAAC;YAAI;YAAO,OAAO,KAAK,GAAG;;;AAG9B;AA5BA,OAAO,MAAM,oBAAM,+FA4BhB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode.snap index 8557adf0d8e..d89105fbc6c 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode.snap @@ -20,26 +20,30 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrlDEV } from "@qwik.dev/core"; +// const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrlDEV(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0", { file: "/user/qwik/src/test.tsx", lo: 88, hi: 200, displayName: "test.tsx_App_component" }); +// export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;AAGA,OAAO,MAAM,oBAAM,6CAMhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;AAGA,OAAO,MAAM,oBAAM,6CAMhB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== import { _jsxSorted } from "@qwik.dev/core"; import { qrlDEV } from "@qwik.dev/core"; +// const _qrl_App_component_Cmp_p_q_e_click_Yl4ybrJWrt4 = /*#__PURE__*/ qrlDEV(()=>import("./test.tsx_App_component_Cmp_p_q_e_click_Yl4ybrJWrt4"), "App_component_Cmp_p_q_e_click_Yl4ybrJWrt4", { file: "/user/qwik/src/test.tsx", lo: 144, hi: 169, displayName: "test.tsx_App_component_Cmp_p_q_e_click" }); +// export const App_component_ckEPmXZlub0 = ()=>{ return /*#__PURE__*/ _jsxSorted(Cmp, null, null, /*#__PURE__*/ _jsxSorted("p", null, { class: "stuff", @@ -56,7 +60,7 @@ export const App_component_ckEPmXZlub0 = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;yCAG8B;IAC7B,qBACC,WAAC,+BACA,WAAC;QAAE,OAAM;QAAQ,WAAQ;OAA6B;;;;;;;;;AAGzD\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;yCAG8B;IAC7B,qBACC,WAAC,+BACA,WAAC;QAAE,OAAM;QAAQ,WAAQ;OAA6B;;;;;;;;;AAGzD\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode_inlined.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode_inlined.snap index b4622a7697d..d126e7cb28f 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode_inlined.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode_inlined.snap @@ -21,6 +21,7 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { inlinedQrlDEV } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; +// const App_component_Cmp_p_q_e_click_Yl4ybrJWrt4 = ()=>console.log('warn'); const App_component_ckEPmXZlub0 = ()=>{ return /*#__PURE__*/ _jsxSorted(Cmp, null, null, /*#__PURE__*/ _jsxSorted("p", null, { @@ -49,7 +50,7 @@ export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrlDEV(App_co })); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;kDAM8B,IAAM,QAAQ,GAAG,CAAC;kCAHlB;IAC7B,qBACC,WAAC,+BACA,WAAC;QAAE,OAAM;QAAQ,WAAQ;;;;;;OAA6B;;;;;;;;;AAGzD;AANA,OAAO,MAAM,oBAAM;;;;;IAMhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;kDAM8B,IAAM,QAAQ,GAAG,CAAC;kCAHlB;IAC7B,qBACC,WAAC,+BACA,WAAC;QAAE,OAAM;QAAQ,WAAQ;;;;;;OAA6B;;;;;;;;;AAGzD;AANA,OAAO,MAAM,oBAAM;;;;;IAMhB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_drop_side_effects.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_drop_side_effects.snap index 377f8291168..4c7c8968665 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_drop_side_effects.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_drop_side_effects.snap @@ -42,6 +42,7 @@ import { _noopQrlDEV } from "@qwik.dev/core"; import { componentQrl } from "@qwik.dev/core"; import { qrlDEV } from "@qwik.dev/core"; import { sideEffect } from './secret'; +// const _qrl_qrl_4294901760 = /*#__PURE__*/ _noopQrlDEV("api_server_JonPp043gH0", { file: "/user/qwik/src/test.tsx", lo: 0, @@ -54,6 +55,7 @@ const _qrl_test_component_LUXeXe0DQrg = /*#__PURE__*/ qrlDEV(()=>import("./test. hi: 575, displayName: "test.tsx_test_component" }); +// (function() { console.log('run'); })(); @@ -65,14 +67,15 @@ export const api = serverQrl(_qrl_qrl_4294901760); export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAMA,SAAS,UAAU,QAAQ,WAAW;;;;;;;;;;;;;AAKtC,CAAC;IACA,QAAQ,GAAG,CAAC;AACZ,CAAC;AACD,CAAC;IACD,QAAQ,GAAG,CAAC;AACZ,CAAC;AAEF;AAEA,OAAO,MAAM,MAAM,+BAEhB;AAEH,6BAAe,8CAIX\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAMA,SAAS,UAAU,QAAQ,WAAW;;;;;;;;;;;;;;;AAKtC,CAAC;IACA,QAAQ,GAAG,CAAC;AACZ,CAAC;AACD,CAAC;IACD,QAAQ,GAAG,CAAC;AACZ,CAAC;AAEF;AAEA,OAAO,MAAM,MAAM,+BAEhB;AAEH,6BAAe,8CAIX\"}") ============================= test.tsx_test_component_button_q_e_click_qwSL5gM03T4.js (ENTRY POINT)== import { api } from "./test"; +// export const test_component_button_q_e_click_qwSL5gM03T4 = ()=>await api(); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";2DA0BoB,IAAM,MAAM\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;2DA0BoB,IAAM,MAAM\"}") /* { "origin": "test.tsx", @@ -97,12 +100,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _jsxSorted } from "@qwik.dev/core"; import { qrlDEV } from "@qwik.dev/core"; +// const _qrl_test_component_button_q_e_click_qwSL5gM03T4 = /*#__PURE__*/ qrlDEV(()=>import("./test.tsx_test_component_button_q_e_click_qwSL5gM03T4"), "test_component_button_q_e_click_qwSL5gM03T4", { file: "/user/qwik/src/test.tsx", lo: 541, hi: 558, displayName: "test.tsx_test_component_button_q_e_click" }); +// export const test_component_LUXeXe0DQrg = ()=>{ return /*#__PURE__*/ _jsxSorted("button", null, { "q-e:click": _qrl_test_component_button_q_e_click_qwSL5gM03T4 @@ -114,7 +119,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;0CAwB0B;IACzB,qBACC,WAAC;QAAO,WAAQ;;;;;;AAEjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;0CAwB0B;IACzB,qBACC,WAAC;QAAO,WAAQ;;;;;;AAEjB\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_explicit_ext_no_transpile.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_explicit_ext_no_transpile.snap index 1406762920b..83e43e583f3 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_explicit_ext_no_transpile.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_explicit_ext_no_transpile.snap @@ -19,11 +19,13 @@ export const App = component$((props) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0.tsx"), "App_component_ckEPmXZlub0"); +// export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CAKhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAGA,OAAO,MAAM,oBAAM,6CAKhB\"}") ============================= test.tsx_App_component_useStyles_t35nSa5UV7U.tsx == export const App_component_useStyles_t35nSa5UV7U = 'hola'; @@ -54,15 +56,17 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { qrl } from "@qwik.dev/core"; import { useStylesQrl } from "@qwik.dev/core"; +// const _qrl_App_component_1_w0t0o3QMovU = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_1_w0t0o3QMovU.tsx"), "App_component_1_w0t0o3QMovU"); const _qrl_App_component_useStyles_t35nSa5UV7U = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_useStyles_t35nSa5UV7U.tsx"), "App_component_useStyles_t35nSa5UV7U"); +// export const App_component_ckEPmXZlub0 = (props)=>{ useStylesQrl(_qrl_App_component_useStyles_t35nSa5UV7U); return _qrl_App_component_1_w0t0o3QMovU; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;yCAG8B,CAAC;IAC9B;IACA;AAGD\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;yCAG8B,CAAC;IAC9B;IACA;AAGD\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_explicit_ext_transpile.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_explicit_ext_transpile.snap index 9c1eb8fede2..972f6c102b3 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_explicit_ext_transpile.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_explicit_ext_transpile.snap @@ -19,11 +19,13 @@ export const App = component$((props) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0.js"), "App_component_ckEPmXZlub0"); +// export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CAKhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAGA,OAAO,MAAM,oBAAM,6CAKhB\"}") ============================= test.tsx_App_component_useStyles_t35nSa5UV7U.js (ENTRY POINT)== export const App_component_useStyles_t35nSa5UV7U = 'hola'; @@ -54,15 +56,17 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { qrl } from "@qwik.dev/core"; import { useStylesQrl } from "@qwik.dev/core"; +// const _qrl_App_component_1_w0t0o3QMovU = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_1_w0t0o3QMovU.js"), "App_component_1_w0t0o3QMovU"); const _qrl_App_component_useStyles_t35nSa5UV7U = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_useStyles_t35nSa5UV7U.js"), "App_component_useStyles_t35nSa5UV7U"); +// export const App_component_ckEPmXZlub0 = (props)=>{ useStylesQrl(_qrl_App_component_useStyles_t35nSa5UV7U); return _qrl_App_component_1_w0t0o3QMovU; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;yCAG8B,CAAC;IAC9B;IACA;AAGD\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;yCAG8B,CAAC;IAC9B;IACA;AAGD\"}") /* { "origin": "test.tsx", @@ -89,10 +93,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx_App_component_1_w0t0o3QMovU.js (ENTRY POINT)== import { _jsxSorted } from "@qwik.dev/core"; +// export const App_component_1_w0t0o3QMovU = ()=>/*#__PURE__*/ _jsxSorted("div", null, null, null, 3, "u6_0"); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";2CAKU,kBACR,WAAC\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;2CAKU,kBACR,WAAC\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_export_issue.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_export_issue.snap index d9d53c15f31..9b56856f27c 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_export_issue.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_export_issue.snap @@ -30,8 +30,10 @@ export default App; import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); const _qrl_Root_component_royhjYaCbYE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Root_component_royhjYaCbYE"), "Root_component_royhjYaCbYE"); +// const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); export const Root = /*#__PURE__*/ componentQrl(_qrl_Root_component_royhjYaCbYE); const Other = 12; @@ -40,17 +42,18 @@ export default App; export { App as _auto_App }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAGA,MAAM,oBAAM;AAOZ,OAAO,MAAM,qBAAO,8CAIjB;AAEH,MAAM,QAAQ;AACd,SAAS,SAAS,GAAG,GAAG;AAExB,eAAe,IAAI\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;AAGA,MAAM,oBAAM;AAOZ,OAAO,MAAM,qBAAO,8CAIjB;AAEH,MAAM,QAAQ;AACd,SAAS,SAAS,GAAG,GAAG;AAExB,eAAe,IAAI\"}") ============================= test.tsx_Root_component_royhjYaCbYE.js (ENTRY POINT)== import { _auto_App as App } from "./test"; import { _jsxSorted } from "@qwik.dev/core"; +// export const Root_component_royhjYaCbYE = (props)=>{ return /*#__PURE__*/ _jsxSorted(App, null, null, null, 3, "u6_1"); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;0CAU+B,CAAC;IAC/B,qBACC,WAAC;AAEH\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;0CAU+B,CAAC;IAC/B,qBACC,WAAC;AAEH\"}") /* { "origin": "test.tsx", @@ -77,12 +80,13 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== import { _jsxSorted } from "@qwik.dev/core"; +// export const App_component_ckEPmXZlub0 = ()=>{ return /*#__PURE__*/ _jsxSorted("div", null, null, "hola", 3, "u6_0"); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";yCAGuB;IACtB,qBACC,WAAC,mBAAI;AAEP\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;yCAGuB;IACtB,qBACC,WAAC,mBAAI;AAEP\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_exports.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_exports.snap index de284e002f4..bcd4da25aee 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_exports.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_exports.snap @@ -33,13 +33,15 @@ export const Footer = component$(); ============================= project/test.tsx_Header_component_UVBJuFYfvDo.jsx (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; +// const _qrl_Header_component_1_uWM1kg0IGO0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_1_uWM1kg0IGO0"), "Header_component_1_uWM1kg0IGO0"); +// export const Header_component_UVBJuFYfvDo = ()=>{ return _qrl_Header_component_1_uWM1kg0IGO0; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;4CAciC;IAChC;AAMD\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;;4CAciC;IAChC;AAMD\"}") /* { "origin": "project/test.tsx", @@ -64,7 +66,9 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\" import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_Header_component_UVBJuFYfvDo = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_UVBJuFYfvDo"), "Header_component_UVBJuFYfvDo"); +// export const [a, { b, v1: [c], d = v2, ...e }, f = v3, ...g] = obj; const exp1 = 1; const internal = 2; @@ -77,7 +81,7 @@ export const Header = /*#__PURE__*/ componentQrl(_qrl_Header_component_UVBJuFYfv export const Footer = /*#__PURE__*/ componentQrl(); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,CAAC,GAAG,EAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAE,EAAE,EAAE,GAAG,GAAE,EAAE,IAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;AAE7D,MAAM,OAAO;AACb,MAAM,WAAW;AACjB,SAAQ,IAAI,EAAE,YAAY,KAAK,GAAE;AAEjC,OAAO,SAAS,OAAQ;AACxB,OAAO,MAAM;AAAK;AAElB,eAAe,SAAS,aAAa;AAErC,OAAO,MAAM,uBAAS,gDAOnB;AAEH,OAAO,MAAM,uBAAS,eAAa\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAGA,OAAO,MAAM,CAAC,GAAG,EAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,IAAE,EAAE,EAAE,GAAG,GAAE,EAAE,IAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;AAE7D,MAAM,OAAO;AACb,MAAM,WAAW;AACjB,SAAQ,IAAI,EAAE,YAAY,KAAK,GAAE;AAEjC,OAAO,SAAS,OAAQ;AACxB,OAAO,MAAM;AAAK;AAElB,eAAe,SAAS,aAAa;AAErC,OAAO,MAAM,uBAAS,gDAOnB;AAEH,OAAO,MAAM,uBAAS,eAAa\"}") ============================= project/test.tsx_Header_component_1_uWM1kg0IGO0.jsx (ENTRY POINT)== import { default as DefaultFn } from "./test"; @@ -92,13 +96,14 @@ import { exp1 } from "./test"; import { f } from "./test"; import { foo } from "./test"; import { expr2 as internal } from "./test"; +// export const Header_component_1_uWM1kg0IGO0 = ()=>
{a}{b}{c}{d}{e}{f}{exp1}{internal}{foo}{bar}{DefaultFn}
{v1}{v2}{v3}{obj}
; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;8CAeU,KACP,OAAO;GACP,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,UAAU,KAAK,KAAK,YAAY,IAAI;GAClE,CAAC,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI;EAC7B,EAAE\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;8CAeU,KACP,OAAO;GACP,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,UAAU,KAAK,KAAK,YAAY,IAAI;GAClE,CAAC,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI;EAC7B,EAAE\"}") /* { "origin": "project/test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_fix_dynamic_import.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_fix_dynamic_import.snap index 6c29aab0569..e89cb81007e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_fix_dynamic_import.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_fix_dynamic_import.snap @@ -25,6 +25,7 @@ export const Header = component$(() => { ============================= project/folder/test.tsx_Header_component_RGgm7Ks9QWI.tsx == import thing from "../state"; +// export const Header_component_RGgm7Ks9QWI = ()=>{ return
{import("../folder/state3")} @@ -33,7 +34,7 @@ export const Header_component_RGgm7Ks9QWI = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/folder/test.tsx\"],\"names\":[],\"mappings\":\";4CAQiC;IAChC,QACE,IAAI;GACJ,CAAC,MAAM,CAAC,oBAAoB;GAC5B,CAAC,MAAM;EACR,EAAE;AAEJ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/folder/test.tsx\"],\"names\":[],\"mappings\":\";;4CAQiC;IAChC,QACE,IAAI;GACJ,CAAC,MAAM,CAAC,oBAAoB;GAC5B,CAAC,MAAM;EACR,EAAE;AAEJ\"}") /* { "origin": "project/folder/test.tsx", @@ -58,14 +59,16 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/folder/test.tsx\"],\" import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_Header_component_RGgm7Ks9QWI = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_RGgm7Ks9QWI"), "Header_component_RGgm7Ks9QWI"); +// export function foo() { return import("../foo/state2"); } export const Header = /*#__PURE__*/ componentQrl(_qrl_Header_component_RGgm7Ks9QWI); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/folder/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA,OAAO,SAAS;IACf,OAAO,MAAM,CAAC;AACf;AAEA,OAAO,MAAM,uBAAS,gDAOnB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/project/folder/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAIA,OAAO,SAAS;IACf,OAAO,MAAM,CAAC;AACf;AAEA,OAAO,MAAM,uBAAS,gDAOnB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component.snap index 6b25455266b..dbe3593eed5 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component.snap @@ -19,6 +19,7 @@ const Header = component$(() => { ============================= test.tsx_Header_component_J4uyIhaBNR4.tsx (ENTRY POINT)== import { useStore } from "@qwik.dev/core"; +// export const Header_component_J4uyIhaBNR4 = ()=>{ const thing = useStore(); const { foo, bar } = foo(); @@ -26,7 +27,7 @@ export const Header_component_J4uyIhaBNR4 = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";4CAE0B;IACzB,MAAM,QAAQ;IACd,MAAM,EAAC,GAAG,EAAE,GAAG,EAAC,GAAG;IAEnB,QACE,KAAK,QAAQ;AAEhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;4CAE0B;IACzB,MAAM,QAAQ;IACd,MAAM,EAAC,GAAG,EAAE,GAAG,EAAC,GAAG;IAEnB,QACE,KAAK,QAAQ;AAEhB\"}") /* { "origin": "test.tsx", @@ -52,11 +53,13 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { $, component$, useStore } from '@qwik.dev/core'; +// const _qrl_Header_component_J4uyIhaBNR4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Header_component_J4uyIhaBNR4"), "Header_component_J4uyIhaBNR4"); +// const Header = /*#__PURE__*/ componentQrl(_qrl_Header_component_J4uyIhaBNR4); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AACA,SAAS,CAAC,EAAE,UAAU,EAAE,QAAQ,QAAQ,iBAAiB;;AACzD,MAAM,uBAAS\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AACA,SAAS,CAAC,EAAE,UAAU,EAAE,QAAQ,QAAQ,iBAAiB;;;;AACzD,MAAM,uBAAS\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component_2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component_2.snap index eb71412ac95..5cd05ec76ed 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component_2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component_2.snap @@ -40,7 +40,9 @@ export const App = component$((props) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useStore } from '@qwik.dev/core'; +// const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +// export const useCounter = ()=>{ return useStore({ count: 0 @@ -50,7 +52,7 @@ export const STEP = 1; export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AACA,SAAwB,QAAQ,QAAQ,iBAAiB;;AACzD,OAAO,MAAM,aAAa;IACzB,OAAO,SAAS;QAAC,OAAO;IAAC;AAC1B,EAAC;AAED,OAAO,MAAM,OAAO,EAAE;AAEtB,OAAO,MAAM,oBAAM,6CAoBjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AACA,SAAwB,QAAQ,QAAQ,iBAAiB;;;;AACzD,OAAO,MAAM,aAAa;IACzB,OAAO,SAAS;QAAC,OAAO;IAAC;AAC1B,EAAC;AAED,OAAO,MAAM,OAAO,EAAE;AAEtB,OAAO,MAAM,oBAAM,6CAoBjB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== import { useCounter } from "./test"; @@ -58,8 +60,10 @@ import { _jsxSorted } from "@qwik.dev/core"; import { _wrapProp } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useStore } from "@qwik.dev/core"; +// const i_UB6Fs5a3bd8 = ()=>import("./test.tsx_App_component_div_button_q_e_click_UB6Fs5a3bd8"); const i_mi4E1piTWe8 = ()=>import("./test.tsx_App_component_div_q_e_click_mi4E1piTWe8"); +// export const App_component_ckEPmXZlub0 = (props)=>{ const state = useCounter(); const thing = useStore({ @@ -86,7 +90,7 @@ export const App_component_ckEPmXZlub0 = (props)=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;yCAQ8B,CAAC;IAC9B,MAAM,QAAQ;IACd,MAAM,QAAQ,SAAS;QAAC,OAAO;IAAC;IAGhC,MAAM,SAAS,MAAM,KAAK,GAAG;;;;;;IAC7B,qBACC,WAAC;QAAI,WAAQ;;;;;sBACZ,WAAC,8BAAM;QACN,QAAQ,GAAG,CAAC,CAAA,oBACZ,WAAC;gBACA,WAAQ;uBAFG;+BAIV;;AAON\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;yCAQ8B,CAAC;IAC9B,MAAM,QAAQ;IACd,MAAM,QAAQ,SAAS;QAAC,OAAO;IAAC;IAGhC,MAAM,SAAS,MAAM,KAAK,GAAG;;;;;;IAC7B,qBACC,WAAC;QAAI,WAAQ;;;;;sBACZ,WAAC,8BAAM;QACN,QAAQ,GAAG,CAAC,CAAA,oBACZ,WAAC;gBACA,WAAQ;uBAFG;+BAIV;;AAON\"}") /* { "origin": "test.tsx", @@ -114,13 +118,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _captures } from "@qwik.dev/core"; import { STEP } from "./test"; +// export const App_component_div_button_q_e_click_UB6Fs5a3bd8 = (_, _1, btn)=>{ const props = _captures[0], state = _captures[1], thing = _captures[2]; return state.count += btn.offset + thing + STEP + 2 + props.step; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;8DAmBe,QAFC;;WAEK,MAAM,KAAK,IAAI,IAAI,MAAM,GAAG,QAAQ,OARzC,IAQyD,MAAM,IAAI\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;8DAmBe,QAFC;;WAEK,MAAM,KAAK,IAAI,IAAI,MAAM,GAAG,QAAQ,OARzC,IAQyD,MAAM,IAAI\"}") /* { "origin": "test.tsx", @@ -154,13 +159,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx_App_component_div_q_e_click_mi4E1piTWe8.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; +// export const App_component_div_q_e_click_mi4E1piTWe8 = ()=>{ const count2 = _captures[0], state = _captures[1]; return state.count += count2; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";uDAeiB;;WAAM,MAAM,KAAK,IAAE\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;uDAeiB;;WAAM,MAAM,KAAK,IAAE\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component_capture_props.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component_capture_props.snap index c07f5854ebe..372b36ca616 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component_capture_props.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_functional_component_capture_props.snap @@ -26,16 +26,20 @@ export const App = component$(({count, rest: [I2, {I3, v1: [I4], I5=v2, ...I6}, import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +// export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CAYjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAGA,OAAO,MAAM,oBAAM,6CAYjB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; import { useStore } from "@qwik.dev/core"; +// const i_w0t0o3QMovU = ()=>import("./test.tsx_App_component_1_w0t0o3QMovU"); +// export const App_component_ckEPmXZlub0 = ({ count, rest: [I2, { I3, v1: [I4], I5 = v2, ...I6 }, I7 = v3, ...I8] })=>{ const state = useStore({ count: 0 @@ -62,7 +66,7 @@ export const App_component_ckEPmXZlub0 = ({ count, rest: [I2, { I3, v1: [I4], I5 }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;yCAG8B,CAAC,EAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,KAAG,EAAE,EAAE,GAAG,IAAG,EAAE,KAAG,EAAE,EAAE,GAAG,GAAG,EAAC;IAC7F,MAAM,QAAQ,SAAS;QAAC,OAAO;IAAC;IAChC,MAAM,EAAC,MAAM,CAAC,IAAI,EAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,KAAG,EAAE,EAAE,GAAG,IAAG,EAAE,KAAG,EAAE,EAAE,GAAG,GAAG,EAAC,GAAG;IACjE;;;;;;;;;;;;;;;;;;AASD\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;yCAG8B,CAAC,EAAC,KAAK,EAAE,MAAM,CAAC,IAAI,EAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,KAAG,EAAE,EAAE,GAAG,IAAG,EAAE,KAAG,EAAE,EAAE,GAAG,GAAG,EAAC;IAC7F,MAAM,QAAQ,SAAS;QAAC,OAAO;IAAC;IAChC,MAAM,EAAC,MAAM,CAAC,IAAI,EAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,KAAG,EAAE,EAAE,GAAG,IAAG,EAAE,KAAG,EAAE,EAAE,GAAG,GAAG,EAAC,GAAG;IACjE;;;;;;;;;;;;;;;;;;AASD\"}") /* { "origin": "test.tsx", @@ -89,13 +93,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx_App_component_div_q_e_click_mi4E1piTWe8.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; +// export const App_component_div_q_e_click_mi4E1piTWe8 = ()=>{ const count = _captures[0], state = _captures[1]; return state.count += count + total; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";uDAQkB;;WAAM,MAAM,KAAK,IAAI,QAAQ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;uDAQkB;;WAAM,MAAM,KAAK,IAAI,QAAQ\"}") /* { "origin": "test.tsx", @@ -125,7 +130,9 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _captures } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const i_mi4E1piTWe8 = ()=>import("./test.tsx_App_component_div_q_e_click_mi4E1piTWe8"); +// export const App_component_1_w0t0o3QMovU = ()=>{ const C2 = _captures[0], C3 = _captures[1], C4 = _captures[2], C5 = _captures[3], C6 = _captures[4], C7 = _captures[5], C8 = _captures[6], I2 = _captures[7], I3 = _captures[8], I4 = _captures[9], I5 = _captures[10], I6 = _captures[11], I7 = _captures[12], I8 = _captures[13], count = _captures[14], state = _captures[15]; return /*#__PURE__*/ _jsxSorted("div", { @@ -155,7 +162,7 @@ export const App_component_1_w0t0o3QMovU = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;2CAMU;;IACR,qBACC,WAAC;QAAI,WAAQ;;;;;QACX;QAAI;QAAI;QAAI;QAAI;QAAI;QAAI;QACxB;QAAI;QAAI;QAAI;QAAI;QAAI;QAAI;QACxB;QAAI;QAAI\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;2CAMU;;IACR,qBACC,WAAC;QAAI,WAAQ;;;;;QACX;QAAI;QAAI;QAAI;QAAI;QAAI;QAAI;QACxB;QAAI;QAAI;QAAI;QAAI;QAAI;QAAI;QACxB;QAAI;QAAI\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_getter_generation.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_getter_generation.snap index 3cdd506a02d..ffe1553a7ae 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_getter_generation.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_getter_generation.snap @@ -43,19 +43,22 @@ export const Cmp = component$((props) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); const _qrl_Cmp_component_4ryKJTOKjWE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Cmp_component_4ryKJTOKjWE"), "Cmp_component_4ryKJTOKjWE"); +// export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); export const Cmp = /*#__PURE__*/ componentQrl(_qrl_Cmp_component_4ryKJTOKjWE); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AAGA,OAAO,MAAM,oBAAM,6CAoBhB;AAEH,OAAO,MAAM,oBAAM,6CAOhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;AAGA,OAAO,MAAM,oBAAM,6CAoBhB;AAEH,OAAO,MAAM,oBAAM,6CAOhB\"}") ============================= test.tsx_Cmp_component_4ryKJTOKjWE.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; import { _fnSignal } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { _wrapProp } from "@qwik.dev/core"; +// const _hf0 = (p0)=>p0.nested.count; const _hf0_str = "p0.nested.count"; export const Cmp_component_4ryKJTOKjWE = (props)=>{ @@ -74,7 +77,7 @@ export const Cmp_component_4ryKJTOKjWE = (props)=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;mBAgBW,GAAM,MAAM,CAAC,KAAK;;yCASC,CAAC;IAC9B,qBACC;sBACC,WAAC;YAAE,YAAU,YAAE;;;;sBACf,WAAC;YAAE;sBAAO;0BAAY,WAAC;;;AAG1B\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;mBAgBW,GAAM,MAAM,CAAC,KAAK;;yCASC,CAAC;IAC9B,qBACC;sBACC,WAAC;YAAE,YAAU,YAAE;;;;sBACf,WAAC;YAAE;sBAAO;0BAAY,WAAC;;;AAG1B\"}") /* { "origin": "test.tsx", @@ -105,6 +108,7 @@ import { _fnSignal } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { _wrapProp } from "@qwik.dev/core"; import { useStore } from "@qwik.dev/core"; +// const _hf0 = (p0)=>p0.nested.count; const _hf0_str = "p0.nested.count"; const _hf1 = (p0)=>p0.stuff + 12; @@ -137,7 +141,7 @@ export const App_component_ckEPmXZlub0 = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;mBAgBW,GAAM,MAAM,CAAC,KAAK;;mBAEnB,GAAM,KAAK,GAAG;;mBACd,GAAO,QAAQ,EAAE,IAAI;;yCAhBD;IAC7B,MAAM,QAAQ,SAAS;QACtB,OAAO;QACP,OAAO;QACP,QAAQ;YACP,OAAO;QACR;IACD;IACA,MAAM,SAAS,UAAU;IACzB,qBACC,WAAC;QACA,MAAmB;QACnB,KAAK,YAAE;QACP,MAAM;;;QACN,QAAQ;QACR,KAAK;;;QACL,KAAK;;;;AAIR\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;mBAgBW,GAAM,MAAM,CAAC,KAAK;;mBAEnB,GAAM,KAAK,GAAG;;mBACd,GAAO,QAAQ,EAAE,IAAI;;yCAhBD;IAC7B,MAAM,QAAQ,SAAS;QACtB,OAAO;QACP,OAAO;QACP,QAAQ;YACP,OAAO;QACR;IACD;IACA,MAAM,SAAS,UAAU;IACzB,qBACC,WAAC;QACA,MAAmB;QACnB,KAAK,YAAE;QACP,MAAM;;;QACN,QAAQ;QACR,KAAK;;;QACL,KAAK;;;;AAIR\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_analysis.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_analysis.snap index 8cfe670d1f4..970a05b4109 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_analysis.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_analysis.snap @@ -86,21 +86,24 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +// export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAKA,OAAO,MAAM,oBAAM,6CA4ChB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAKA,OAAO,MAAM,oBAAM,6CA4ChB\"}") ============================= test.tsx_App_component_Fragment_Div_immutable4_2zF7jA3Yti0.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; +// export const App_component_Fragment_Div_immutable4_2zF7jA3Yti0 = (ev)=>{ const state = _captures[0]; return console.log(state.count); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";iEA8BiB,CAAC;;WAAO,QAAQ,GAAG,CAAC,MAAM,KAAK\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;iEA8BiB,CAAC;;WAAO,QAAQ,GAAG,CAAC,MAAM,KAAK\"}") /* { "origin": "test.tsx", @@ -164,15 +167,18 @@ import importedValue from "v"; import { qrl } from "@qwik.dev/core"; import styles from "./styles.module.css"; import { useStore } from "@qwik.dev/core"; +// const _hf0 = (p0)=>({ foo: 'bar', baz: p0.count ? true : false }); const _hf0_str = '{foo:"bar",baz:p0.count?true:false}'; +// const _qrl_App_component_Fragment_Div_onEvent_zrFduYbT3xM = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_Fragment_Div_onEvent_zrFduYbT3xM"), "App_component_Fragment_Div_onEvent_zrFduYbT3xM"); const _qrl_App_component_Fragment_Div_transparent_eeDEK6EM1oo = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_Fragment_Div_transparent_eeDEK6EM1oo"), "App_component_Fragment_Div_transparent_eeDEK6EM1oo"); const i_2zF7jA3Yti0 = ()=>import("./test.tsx_App_component_Fragment_Div_immutable4_2zF7jA3Yti0"); const i_pU6yOC5P6sY = ()=>import("./test.tsx_App_component_remove_pU6yOC5P6sY"); +// export const App_component_ckEPmXZlub0 = (props)=>{ const state = useStore({ count: 0 @@ -232,7 +238,7 @@ export const App_component_ckEPmXZlub0 = (props)=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;mBAuCe,CAAA;QACT,KAAK;QACL,KAAK,GAAM,KAAK,GAAG,OAAO;IAC3B,CAAA;;;;;;yCArCyB,CAAC;IAE9B,MAAM,QAAQ,SAAS;QAAC,OAAO;IAAC;IAChC,MAAM;;;IAON,qBACC;sBACC,WAAC;YAAgB,aAAU,MAAM,QAAQ;;YAAtC,OAAM;WAAkC;sBAC3C,WAAC;YAEA,UAAU,OAAO,QAAQ;YACzB,UAAU,MAAM,QAAQ;;YAFxB,OAAO,OAAO,GAAG;YAGjB,QAAQ;YACR,YAAY;YACZ,YAAW;YACX,YAAY;gBACX,KAAK;gBACL,KAAK,gBAAgB,OAAO;YAC7B;YACA,YAAY;YACZ,WAAW;;;YACX,YAAY;gBAAC;gBAAG;gBAAG;gBAAe;gBAAM,CAAC;aAAE;yBAE3C,WAAC,iBAAE;QACE;sBAEL,WA9Ba,MAAT;YAqCH,UAAU,CAAC,IAAM,QAAQ,GAAG,CAAC,MAAM,KAAK,CAAC;;YANzC,OAAO;YACP,SAAS;YACT,QAAQ;;;YAKR,UAAU;gBAAC;gBAAG;gBAAG;gBAAO;gBAAM,CAAC;aAAE;;QAChC;;AAIN\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;mBAuCe,CAAA;QACT,KAAK;QACL,KAAK,GAAM,KAAK,GAAG,OAAO;IAC3B,CAAA;;;;;;;;yCArCyB,CAAC;IAE9B,MAAM,QAAQ,SAAS;QAAC,OAAO;IAAC;IAChC,MAAM;;;IAON,qBACC;sBACC,WAAC;YAAgB,aAAU,MAAM,QAAQ;;YAAtC,OAAM;WAAkC;sBAC3C,WAAC;YAEA,UAAU,OAAO,QAAQ;YACzB,UAAU,MAAM,QAAQ;;YAFxB,OAAO,OAAO,GAAG;YAGjB,QAAQ;YACR,YAAY;YACZ,YAAW;YACX,YAAY;gBACX,KAAK;gBACL,KAAK,gBAAgB,OAAO;YAC7B;YACA,YAAY;YACZ,WAAW;;;YACX,YAAY;gBAAC;gBAAG;gBAAG;gBAAe;gBAAM,CAAC;aAAE;yBAE3C,WAAC,iBAAE;QACE;sBAEL,WA9Ba,MAAT;YAqCH,UAAU,CAAC,IAAM,QAAQ,GAAG,CAAC,MAAM,KAAK,CAAC;;YANzC,OAAO;YACP,SAAS;YACT,QAAQ;;;YAKR,UAAU;gBAAC;gBAAG;gBAAG;gBAAO;gBAAM,CAAC;aAAE;;QAChC;;AAIN\"}") /* { "origin": "test.tsx", @@ -259,6 +265,7 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx_App_component_remove_pU6yOC5P6sY.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; +// export const App_component_remove_pU6yOC5P6sY = (id)=>{ const state = _captures[0]; const d = state.data; @@ -266,7 +273,7 @@ export const App_component_remove_pU6yOC5P6sY = (id)=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";gDAQkB,CAAC;;IACjB,MAAM,IAAI,MAAM,IAAI;IACpB,EAAE,MAAM,CACP,EAAE,SAAS,CAAC,CAAC,IAAM,EAAE,EAAE,KAAK,KAC5B\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;gDAQkB,CAAC;;IACjB,MAAM,IAAI,MAAM,IAAI;IACpB,EAAE,MAAM,CACP,EAAE,SAAS,CAAC,CAAC,IAAM,EAAE,EAAE,KAAK,KAC5B\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_function_components.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_function_components.snap index 2e91cb05819..26fbc0076c9 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_function_components.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_function_components.snap @@ -22,13 +22,14 @@ import { componentQrl } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; import { Slot } from '@qwik.dev/core'; +// const App_component_ckEPmXZlub0 = (props)=>{ return /*#__PURE__*/ _jsxSorted("div", null, null, /*#__PURE__*/ _jsxSorted(Slot, null, null, null, 3, "u6_0"), 1, "u6_1"); }; export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(App_component_ckEPmXZlub0, "App_component_ckEPmXZlub0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AACA,SAA+B,IAAI,QAAQ,iBAAiB;kCAE9B,CAAC;IAC9B,qBACC,WAAC,iCACA,WAAC;AAGJ;AANA,OAAO,MAAM,oBAAM,+FAMhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AACA,SAA+B,IAAI,QAAQ,iBAAiB;;kCAE9B,CAAC;IAC9B,qBACC,WAAC,iCACA,WAAC;AAGJ;AANA,OAAO,MAAM,oBAAM,+FAMhB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_import_assertion.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_import_assertion.snap index f33ea96563b..e278158769c 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_import_assertion.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_import_assertion.snap @@ -17,22 +17,25 @@ export const Greeter = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_Greeter_component_n7HuG2hhU0Q = /*#__PURE__*/ qrl(()=>import("./test.tsx_Greeter_component_n7HuG2hhU0Q"), "Greeter_component_n7HuG2hhU0Q"); +// export const Greeter = /*#__PURE__*/ componentQrl(_qrl_Greeter_component_n7HuG2hhU0Q); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAIA,OAAO,MAAM,wBAAU,iDAEpB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAIA,OAAO,MAAM,wBAAU,iDAEpB\"}") ============================= test.tsx_Greeter_component_n7HuG2hhU0Q.js (ENTRY POINT)== import json from "./foo.json" with { type: "json" }; +// export const Greeter_component_n7HuG2hhU0Q = ()=>{ return json; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"mCAEqC;IAAE,MAAM;AAAO;6CAElB;IACjC,OAAO;AACR\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"mCAEqC;IAAE,MAAM;AAAO;;6CAElB;IACjC,OAAO;AACR\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_inlined_entry_strategy.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_inlined_entry_strategy.snap index 3f237f32189..888fe8f040c 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_inlined_entry_strategy.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_inlined_entry_strategy.snap @@ -39,6 +39,7 @@ import { _captures } from "@qwik.dev/core"; import { useStore } from '@qwik.dev/core'; import { thing } from './sibling'; import mongodb from 'mongodb'; +// const Child_component_div_q_e_click_cROa4sult1s = ()=>console.log(mongodb); const Child_component_useBrowserVisibleTask_0IGFPOyJmQA = ()=>{ const state = _captures[0]; @@ -60,7 +61,7 @@ const Child_component_9GyF01GDKqw = ()=>{ export const Child = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(Child_component_9GyF01GDKqw, "Child_component_9GyF01GDKqw")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AACA,SAA6C,QAAQ,QAAoB,iBAAiB;AAC1F,SAAS,KAAK,QAAQ,YAAY;AAClC,OAAO,aAAa,UAAU;kDAeb,IAAM,QAAQ,GAAG,CAAC;0DALX;;IACtB,MAAM,KAAK,GAAG,MAAM,OAAO,KAAK,MAAM,CAAC;;8CAP7B;oCAFoB;IAE/B;IACA,MAAM,QAAQ,SAAS;QACtB,OAAO;IACR;IAEA,qBAAqB;IACrB;;;IAIA,QACE,IAAI,6HAAsC;EAC3C,EAAE;AAEJ;AAhBA,OAAO,MAAM,sBAAQ,mGAgBlB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AACA,SAA6C,QAAQ,QAAoB,iBAAiB;AAC1F,SAAS,KAAK,QAAQ,YAAY;AAClC,OAAO,aAAa,UAAU;;kDAeb,IAAM,QAAQ,GAAG,CAAC;0DALX;;IACtB,MAAM,KAAK,GAAG,MAAM,OAAO,KAAK,MAAM,CAAC;;8CAP7B;oCAFoB;IAE/B;IACA,MAAM,QAAQ,SAAS;QACtB,OAAO;IACR;IAEA,qBAAqB;IACrB;;;IAIA,QACE,IAAI,6HAAsC;EAC3C,EAAE;AAEJ;AAhBA,OAAO,MAAM,sBAAQ,mGAgBlB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_input_bind.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_input_bind.snap index d2a1c02d67d..c58fe2aa797 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_input_bind.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_input_bind.snap @@ -33,6 +33,7 @@ import { _jsxSorted } from "@qwik.dev/core"; import { _chk } from "@qwik.dev/core"; import { _wrapProp } from "@qwik.dev/core"; import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; +// const s_n7HuG2hhU0Q = ()=>{ const value = useSignal(0); const checked = useSignal(false); @@ -60,7 +61,7 @@ const s_n7HuG2hhU0Q = ()=>{ export const Greeter = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(s_n7HuG2hhU0Q, "s_n7HuG2hhU0Q")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;sBAGkC;IACjC,MAAM,QAAQ,UAAU;IACxB,MAAM,UAAU,UAAU;IAC1B,MAAM,QAAQ;IACd,qBACC;sBACC,WAAC;qBAAkB;;gBAAA;;;sBACnB,WAAC;uBAAoB;;gBAAA;;;sBACrB,WAAC;YAAD,cAAmB;;sBACnB,WAAC,mBAAK;sBACN,WAAC,6BAAK;;AAIT;AAdA,OAAO,MAAM,wBAAU,uEAcpB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;sBAGkC;IACjC,MAAM,QAAQ,UAAU;IACxB,MAAM,UAAU,UAAU;IAC1B,MAAM,QAAQ;IACd,qBACC;sBACC,WAAC;qBAAkB;;gBAAA;;;sBACnB,WAAC;uBAAoB;;gBAAA;;;sBACrB,WAAC;YAAD,cAAmB;;sBACnB,WAAC,mBAAK;sBACN,WAAC,6BAAK;;AAIT;AAdA,OAAO,MAAM,wBAAU,uEAcpB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_references.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_references.snap index ac2db1cb235..d93eb23b3e2 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_references.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_references.snap @@ -27,15 +27,19 @@ export const App = component$(({count}) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +// export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAQA,OAAO,MAAM,oBAAM,6CAQjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAQA,OAAO,MAAM,oBAAM,6CAQjB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; +// const _qrl_App_component_1_w0t0o3QMovU = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_1_w0t0o3QMovU"), "App_component_1_w0t0o3QMovU"); +// const I1 = 12; const [I2, { I3, v1: [I4], I5 = v2, ...I6 }, I7 = v3, ...I8] = obj; function I9() {} @@ -46,7 +50,7 @@ export const App_component_ckEPmXZlub0 = (_rawProps)=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;MAGM,KAAK;MACL,CAAC,IAAI,EAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,KAAG,EAAE,EAAE,GAAG,IAAG,EAAE,KAAG,EAAE,EAAE,GAAG,GAAG,GAAG;AACzD,SAAS,MAAM;yCAGe;IAC7B,QAAQ,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;IAC5C,QAAQ,GAAG,CAAC,OAAO,IAAI,IAAI,IAAI;IAC/B;AAKD\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;MAGM,KAAK;MACL,CAAC,IAAI,EAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,KAAG,EAAE,EAAE,GAAG,IAAG,EAAE,KAAG,EAAE,EAAE,GAAG,GAAG,GAAG;AACzD,SAAS,MAAM;yCAGe;IAC7B,QAAQ,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;IAC5C,QAAQ,GAAG,CAAC,OAAO,IAAI,IAAI,IAAI;IAC/B;AAKD\"}") /* { "origin": "test.tsx", @@ -73,6 +77,7 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx_App_component_1_w0t0o3QMovU.js (ENTRY POINT)== import { _jsxSorted } from "@qwik.dev/core"; +// class I10 { } export const App_component_1_w0t0o3QMovU = ()=>{ @@ -80,7 +85,7 @@ export const App_component_1_w0t0o3QMovU = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";AAMA,MAAM;AAAK;2CAKD;IACR,qBACC,WAAC;AAEH\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AAMA,MAAM;AAAK;2CAKD;IACR,qBACC,WAAC;AAEH\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_segment_expr1.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_segment_expr1.snap index e9398c81ab1..4118ac7120b 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_segment_expr1.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_invalid_segment_expr1.snap @@ -25,19 +25,22 @@ export const App = component$(() => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "App_component_ckEPmXZlub0"); +// export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAKA,OAAO,MAAM,oBAAM,6CASjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAKA,OAAO,MAAM,oBAAM,6CASjB\"}") ============================= test.tsx_App_component_useStyles_t35nSa5UV7U.js (ENTRY POINT)== import css1 from "./global.css"; import css2 from "./style.css"; +// export const App_component_useStyles_t35nSa5UV7U = `${css1}${css2}`; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;mDAMe,GAAG,OAAO,MAAM\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;mDAMe,GAAG,OAAO,MAAM\"}") /* { "origin": "test.tsx", @@ -64,15 +67,17 @@ import css1 from "./global.css"; import css2 from "./style.css"; import { qrl } from "@qwik.dev/core"; import { useStylesQrl } from "@qwik.dev/core"; +// const _qrl_App_component_1_w0t0o3QMovU = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_1_w0t0o3QMovU"), "App_component_1_w0t0o3QMovU"); const _qrl_App_component_useStyles_t35nSa5UV7U = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_useStyles_t35nSa5UV7U"), "App_component_useStyles_t35nSa5UV7U"); +// export const App_component_ckEPmXZlub0 = ()=>{ useStylesQrl(_qrl_App_component_useStyles_t35nSa5UV7U); return _qrl_App_component_1_w0t0o3QMovU; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;yCAK8B;IAE7B;IAMA;AACD\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;yCAK8B;IAE7B;IAMA;AACD\"}") /* { "origin": "test.tsx", @@ -96,12 +101,13 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx_App_component_1_w0t0o3QMovU.js (ENTRY POINT)== import { _jsxSorted } from "@qwik.dev/core"; +// export const App_component_1_w0t0o3QMovU = ()=>{ return /*#__PURE__*/ _jsxSorted("div", null, null, null, 3, "u6_0"); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";2CAQgB;IACd,qBACC,WAAC;AAEH\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;2CAQgB;IACd,qBACC,WAAC;AAEH\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_33443.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_33443.snap index 1b79ad2e31a..d26995a92b7 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_33443.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_33443.snap @@ -30,6 +30,7 @@ import { _captures } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { useSignal } from '@qwik.dev/core'; +// const _hf0 = (p0, p1)=>(p0.description ?? '') && 'description' in p0.other ? `Hello ${p1.value}` : `Bye ${p1.value}`; const _hf0_str = '(p0.description??"")&&"description"in p0.other?`Hello ${p1.value}`:`Bye ${p1.value}`'; const Issue3742_component_div_button_q_e_click_95Hlm8WgsYY = ()=>{ @@ -55,7 +56,7 @@ const Issue3742_component_svSy0PlWTAw = (_rawProps)=>{ export const Issue3742 = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(Issue3742_component_svSy0PlWTAw, "Issue3742_component_svSy0PlWTAw")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AACA,SAAqB,SAAS,QAAQ,iBAAiB;uBAM9C,AAAC,IAJ4B,eAAc,OAI3B,oBAJ+B,QAIL,CAAC,MAAM,EAAE,GAAQ,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,GAAQ,KAAK,EAAE;;6DAGhF;;WAAM,QAAQ,KAAK;;wCAPH;IACnC,MAAM,UAAU,UAAU;IAC1B,qBACC,WAAC;QACD,KAAK;;;;;QACJ;sBAED,WAAC;YAAO,WAAQ;;;WAAyB;;AAK1C;AAZD,OAAO,MAAM,0BAAY,2GAYrB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AACA,SAAqB,SAAS,QAAQ,iBAAiB;;uBAM9C,AAAC,IAJ4B,eAAc,OAI3B,oBAJ+B,QAIL,CAAC,MAAM,EAAE,GAAQ,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,GAAQ,KAAK,EAAE;;6DAGhF;;WAAM,QAAQ,KAAK;;wCAPH;IACnC,MAAM,UAAU,UAAU;IAC1B,qBACC,WAAC;QACD,KAAK;;;;;QACJ;sBAED,WAAC;YAAO,WAAQ;;;WAAyB;;AAK1C;AAZD,OAAO,MAAM,0BAAY,2GAYrB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_4438.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_4438.snap index 47afc45451b..f4d9ecc2e52 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_4438.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_4438.snap @@ -25,6 +25,7 @@ import { _jsxSorted } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; import { useSignal } from '@qwik.dev/core'; +// const App_component_ckEPmXZlub0 = ()=>{ const toggle = useSignal(false); return /*#__PURE__*/ _jsxSorted(_Fragment, null, null, [ @@ -37,7 +38,7 @@ const App_component_ckEPmXZlub0 = ()=>{ export const App = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(App_component_ckEPmXZlub0, "App_component_ckEPmXZlub0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AACA,SAAqB,SAAS,QAAQ,iBAAiB;kCAEzB;IAC7B,MAAM,SAAS,UAAU;IACzB,qBACC;sBACC,WAAC;YAAI,WAAS,OAAO,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG;;sBACnD,WAAC,mBAAK,OAAO,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;;AAG/D;AARA,OAAO,MAAM,oBAAM,+FAQhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;AACA,SAAqB,SAAS,QAAQ,iBAAiB;;kCAEzB;IAC7B,MAAM,SAAS,UAAU;IACzB,qBACC;sBACC,WAAC;YAAI,WAAS,OAAO,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG;;sBACnD,WAAC,mBAAK,OAAO,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;;AAG/D;AARA,OAAO,MAAM,oBAAM,+FAQhB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx.snap index dfacea39cd8..633ccd4fa6e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx.snap @@ -55,7 +55,9 @@ import { _jsxSplit } from "@qwik.dev/core"; import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; +// const _qrl_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE"); +// export const Lightweight = (props)=>{ return /*#__PURE__*/ _jsxSorted("div", null, null, /*#__PURE__*/ _jsxSorted(_Fragment, null, null, [ /*#__PURE__*/ _jsxSorted("div", null, null, null, 3, null), @@ -69,11 +71,13 @@ export const Foo = /*#__PURE__*/ componentQrl(_qrl_Foo_component_HTDRsvUbLiE, { }); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;AAGA,OAAO,MAAM,cAAc,CAAC;IAC3B,qBACC,WAAC,iCACA;sBACC,WAAC;sBACD,UAAC;4BAAW;0BAAA;;AAIhB,EAAE;AAEF,OAAO,MAAM,oBAAM,6CAuBhB;IACF,SAAS;AACV,GAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;AAGA,OAAO,MAAM,cAAc,CAAC;IAC3B,qBACC,WAAC,iCACA;sBACC,WAAC;sBACD,UAAC;4BAAW;0BAAA;;AAIhB,EAAE;AAEF,OAAO,MAAM,oBAAM,6CAuBhB;IACF,SAAS;AACV,GAAG\"}") ============================= test.tsx_Foo_component_HTDRsvUbLiE.js (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; +// const i_DvU6FitWglY = ()=>import("./test.tsx_Foo_component_1_DvU6FitWglY"); +// export const Foo_component_HTDRsvUbLiE = (props)=>{ return /*#__PURE__*/ qrl(i_DvU6FitWglY, "Foo_component_1_DvU6FitWglY", [ props @@ -81,7 +85,7 @@ export const Foo_component_HTDRsvUbLiE = (props)=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;yCAc8B,CAAC;IAC9B;;;AAsBD\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;yCAc8B,CAAC;IAC9B;;;AAsBD\"}") /* { "origin": "test.tsx", @@ -114,6 +118,7 @@ import { _getConstProps } from "@qwik.dev/core"; import { _getVarProps } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; import { _jsxSplit } from "@qwik.dev/core"; +// export const Foo_component_1_DvU6FitWglY = ()=>{ const props = _captures[0]; return /*#__PURE__*/ _jsxSorted("div", null, null, [ @@ -147,7 +152,7 @@ export const Foo_component_1_DvU6FitWglY = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;2CAeU;;IACR,qBACC,WAAC;sBACA;0BACC,WAAC;gBAAI,OAAM;;0BACX,WAAC;gBAAI,OAAM;;0BACX,WAAC;gBAAI,OAAM;eAAQ;;sBAEpB,WAAC;YAAI,OAAM;yBACV,UAAC;4BAAgB;0BAAA;sBAElB,WAAC;YAAI,OAAM;;0BACV,WAAC;0BACD,WAAC;0BACD,WAAC;;sBAEF,WAAC;YAAI,OAAM;WACT\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;2CAeU;;IACR,qBACC,WAAC;sBACA;0BACC,WAAC;gBAAI,OAAM;;0BACX,WAAC;gBAAI,OAAM;;0BACX,WAAC;gBAAI,OAAM;eAAQ;;sBAEpB,WAAC;YAAI,OAAM;yBACV,UAAC;4BAAgB;0BAAA;sBAElB,WAAC;YAAI,OAAM;;0BACV,WAAC;0BACD,WAAC;0BACD,WAAC;;sBAEF,WAAC;YAAI,OAAM;WACT\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_import_source.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_import_source.snap index a509ce0df70..8a7e38fe164 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_import_source.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_import_source.snap @@ -23,23 +23,26 @@ export const App2 = qwikify$(() => ( /* @jsxImportSource react */ import { qwikifyQrl } from "./qwikfy"; import { qrl } from "@qwik.dev/core"; import { jsx as _jsx } from "react/jsx-runtime"; +// const _qrl_App2_qwikify_RKJW7oCMdS4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App2_qwikify_RKJW7oCMdS4.js"), "App2_qwikify_RKJW7oCMdS4"); +// export const App = ()=>/*#__PURE__*/ _jsx("div", { onClick$: ()=>console.log('App') }); export const App2 = qwikifyQrl(_qrl_App2_qwikify_RKJW7oCMdS4); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"AACA,0BAA0B;;;;AAI1B,OAAO,MAAM,MAAM,kBAClB,KAAC;QAAI,UAAU,IAAI,QAAQ,GAAG,CAAC;OAC9B;AAEF,OAAO,MAAM,OAAO,0CAEjB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"AACA,0BAA0B;;;;;;AAI1B,OAAO,MAAM,MAAM,kBAClB,KAAC;QAAI,UAAU,IAAI,QAAQ,GAAG,CAAC;OAC9B;AAEF,OAAO,MAAM,OAAO,0CAEjB\"}") ============================= test.tsx_App2_qwikify_RKJW7oCMdS4.js (ENTRY POINT)== import { jsx as _jsx } from "react/jsx-runtime"; +// export const App2_qwikify_RKJW7oCMdS4 = ()=>/*#__PURE__*/ _jsx("div", { onClick$: ()=>console.log('App2') }); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";wCAS6B,kBAC5B,KAAC;QAAI,UAAU,IAAI,QAAQ,GAAG,CAAC\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;wCAS6B,kBAC5B,KAAC;QAAI,UAAU,IAAI,QAAQ,GAAG,CAAC\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed.snap index 573629e4b7d..8be517fcf91 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed.snap @@ -24,15 +24,18 @@ export const App = component$((props: Stuff) => { import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_App_component_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0.js"), "App_component_ckEPmXZlub0"); +// export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_ckEPmXZlub0); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CAUhB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAGA,OAAO,MAAM,oBAAM,6CAUhB\"}") ============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; import { _jsxSorted } from "@qwik.dev/core"; +// export const App_component_ckEPmXZlub0 = (props)=>{ return /*#__PURE__*/ _jsxSorted(_Fragment, null, null, [ /*#__PURE__*/ _jsxSorted(Cmp, null, null, null, 3, "stuff"), @@ -48,7 +51,7 @@ export const App_component_ckEPmXZlub0 = (props)=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;yCAG8B,CAAC;IAC9B,qBACC;sBACC,WAAC,0BAAQ;sBACT,WAAC;sBACD,WAAC;YAAI,MAAK;;sBACV,WAAC;YAAI,MAAK;oBAAU,MAAM,KAAK;sBAC/B,WAAC,iBAAoB,iBAAb,MAAM,KAAK;;AAGtB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;yCAG8B,CAAC;IAC9B,qBACC;sBACC,WAAC,0BAAQ;sBACT,WAAC;sBACD,WAAC;YAAI,MAAK;;sBACV,WAAC;YAAI,MAAK;oBAAU,MAAM,KAAK;sBAC/B,WAAC,iBAAoB,iBAAb,MAAM,KAAK;;AAGtB\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed_dev.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed_dev.snap index 0f411709f19..4a71bf4c696 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed_dev.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed_dev.snap @@ -24,20 +24,23 @@ export const App = component$((props: Stuff) => { import { componentQrl } from "@qwik.dev/core"; import { qrlDEV } from "@qwik.dev/core"; +// const _qrl_App_component_KGLYFBhvJc0 = /*#__PURE__*/ qrlDEV(()=>import("./index.tsx_App_component_KGLYFBhvJc0.js"), "App_component_KGLYFBhvJc0", { file: "/src/project/project/index.tsx", lo: 88, hi: 283, displayName: "index.tsx_App_component" }); +// export const App = /*#__PURE__*/ componentQrl(_qrl_App_component_KGLYFBhvJc0); -Some("{\"version\":3,\"sources\":[\"/src/project/project/index.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;AAGA,OAAO,MAAM,oBAAM,6CAUhB\"}") +Some("{\"version\":3,\"sources\":[\"/src/project/project/index.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;AAGA,OAAO,MAAM,oBAAM,6CAUhB\"}") ============================= project/index.tsx_App_component_KGLYFBhvJc0.js (ENTRY POINT)== import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; import { _jsxSorted } from "@qwik.dev/core"; +// export const App_component_KGLYFBhvJc0 = (props)=>{ return /*#__PURE__*/ _jsxSorted(_Fragment, null, null, [ /*#__PURE__*/ _jsxSorted(Cmp, null, null, null, 3, "stuff", { @@ -77,7 +80,7 @@ export const App_component_KGLYFBhvJc0 = (props)=>{ }; -Some("{\"version\":3,\"sources\":[\"/src/project/project/index.tsx\"],\"names\":[],\"mappings\":\";;yCAG8B,CAAC;IAC9B,qBACC;sBACC,WAAC,0BAAQ;;;;;sBACT,WAAC;;;;;sBACD,WAAC;YAAI,MAAK;;;;;;sBACV,WAAC;YAAI,MAAK;oBAAU,MAAM,KAAK;;;;;sBAC/B,WAAC,iBAAoB,iBAAb,MAAM,KAAK;;;;;;;;;;AAGtB\"}") +Some("{\"version\":3,\"sources\":[\"/src/project/project/index.tsx\"],\"names\":[],\"mappings\":\";;;yCAG8B,CAAC;IAC9B,qBACC;sBACC,WAAC,0BAAQ;;;;;sBACT,WAAC;;;;;sBACD,WAAC;YAAI,MAAK;;;;;;sBACV,WAAC;YAAI,MAAK;oBAAU,MAAM,KAAK;;;;;sBAC/B,WAAC,iBAAoB,iBAAb,MAAM,KAAK;;;;;;;;;;AAGtB\"}") /* { "origin": "project/index.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_listeners.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_listeners.snap index eec1df86905..e8b990b4b9b 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_listeners.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_listeners.snap @@ -68,23 +68,27 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { componentQrl } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_Foo_component_HTDRsvUbLiE = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_HTDRsvUbLiE"), "Foo_component_HTDRsvUbLiE"); +// export const Foo = /*#__PURE__*/ componentQrl(_qrl_Foo_component_HTDRsvUbLiE, { tagName: "my-foo" }); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;AAGA,OAAO,MAAM,oBAAM,6CA0BhB;IACF,SAAS;AACV,GAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAGA,OAAO,MAAM,oBAAM,6CA0BhB;IACF,SAAS;AACV,GAAG\"}") ============================= test.tsx_Foo_component_HTDRsvUbLiE.js (ENTRY POINT)== import { qrl } from "@qwik.dev/core"; +// const _qrl_Foo_component_1_DvU6FitWglY = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_1_DvU6FitWglY"), "Foo_component_1_DvU6FitWglY"); +// export const Foo_component_HTDRsvUbLiE = ()=>{ return _qrl_Foo_component_1_DvU6FitWglY; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;yCAG8B;IAE7B;AAwBD\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;yCAG8B;IAE7B;AAwBD\"}") /* { "origin": "test.tsx", @@ -135,6 +139,7 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; +// const _qrl_Foo_component_handler_H10xZtD0e7w = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_handler_H10xZtD0e7w"), "Foo_component_handler_H10xZtD0e7w"); const _qrl_Foo_component_div_custom_pyHnxab17ms = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_custom_pyHnxab17ms"), "Foo_component_div_custom_pyHnxab17ms"); const _qrl_Foo_component_div_host_onClick_cPEH970JbEY = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_host_onClick_cPEH970JbEY"), "Foo_component_div_host_onClick_cPEH970JbEY"); @@ -146,6 +151,7 @@ const _qrl_Foo_component_div_q_e_document_scroll_1_wphyTkeintI = /*#__PURE__*/ q const _qrl_Foo_component_div_q_e_document_scroll_6qyBttefepU = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_q_e_document_scroll_6qyBttefepU"), "Foo_component_div_q_e_document_scroll_6qyBttefepU"); const _qrl_Foo_component_div_q_e_documentscroll_0FSbGzUROso = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_q_e_documentscroll_0FSbGzUROso"), "Foo_component_div_q_e_documentscroll_0FSbGzUROso"); const _qrl_Foo_component_div_q_e_documentscroll_1_d0Zn04qNgs0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Foo_component_div_q_e_documentscroll_1_d0Zn04qNgs0"), "Foo_component_div_q_e_documentscroll_1_d0Zn04qNgs0"); +// export const Foo_component_1_DvU6FitWglY = ()=>{ const handler = _qrl_Foo_component_handler_H10xZtD0e7w; return /*#__PURE__*/ _jsxSorted("div", null, { @@ -166,7 +172,7 @@ export const Foo_component_1_DvU6FitWglY = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;2CAKU;IACR,MAAM;IACN,qBACC,WAAC;QACA,WAAQ;QACR,oBAAiB;QACjB,oBAAiB;QAEjB,YAAS;QACT,sBAAkB;QAClB,sBAAkB;QAPnB,eAkBE;QAlBF,wBAkBE;QAlBF,wBAkBE;QALD,aAAU;QAbX,sBAcoB;QAdpB,oBAekB;QAEjB,OAAO;;AAGV\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;;;2CAKU;IACR,MAAM;IACN,qBACC,WAAC;QACA,WAAQ;QACR,oBAAiB;QACjB,oBAAiB;QAEjB,YAAS;QACT,sBAAkB;QAClB,sBAAkB;QAPnB,eAkBE;QAlBF,wBAkBE;QAlBF,wBAkBE;QALD,aAAU;QAbX,sBAcoB;QAdpB,oBAekB;QAEjB,OAAO;;AAGV\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_lightweight_functional.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_lightweight_functional.snap index a68f4470b26..d4e140d07f1 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_lightweight_functional.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_lightweight_functional.snap @@ -35,6 +35,7 @@ export const ButtonArrow = ({text, color}) => { import { Button } from "./test"; import { ButtonArrow } from "./test"; +// export const Foo_component_HTDRsvUbLiE = (props)=>{ return
+ isSSR ? ( + // @ts-expect-error q:p is not typed + + ) : ( + + ) ); await trigger(document.body, 'button', 'click'); @@ -957,7 +967,12 @@ describe.each([ ); await expect(document.querySelector('button')).toMatchDOM( - + isSSR ? ( + // @ts-expect-error q:p is not typed + + ) : ( + + ) ); }); @@ -1597,7 +1612,7 @@ describe.each([ ); - expect(document.querySelector('#container')).toMatchDOM( + await expect(document.querySelector('#container')).toMatchDOM(
Item 1
Item 2
@@ -2494,10 +2509,10 @@ describe.each([ ); - expect(document.querySelector('main')).toMatchDOM( -
- -
+ const isSsr = render === ssrRenderToDom; + await expect(document.querySelector('main')).toMatchDOM( + // @ts-expect-error q:p is not typed +
{isSsr ? : }
); }); @@ -2505,41 +2520,46 @@ describe.each([ const Cmp = component$(() => { const list = useSignal([1, 2, 3]); return ( -
+ <> -
- {list.value.map((item) => ( -
{item}
- ))} -
-
+
+
+ {list.value.map((item) => ( +
{item}
+ ))} +
+
+ ); }); const { vNode, document } = await render(, { debug }); expect(vNode).toMatchVDOM( -
+ -
-
1
-
2
-
3
-
-
+
+
+
1
+
2
+
3
+
+
+
); await trigger(document.body, 'button', 'click'); expect(vNode).toMatchVDOM( -
+ -
-
+
+
+
+
); - expect(document.querySelector('main')).toMatchDOM( + await expect(document.querySelector('main')).toMatchDOM(
-
); @@ -2560,10 +2580,17 @@ describe.each([ ); }); const { vNode, document } = await render(, { debug }); + const isSsr = render === ssrRenderToDom; + const btn = isSsr ? ( + // @ts-expect-error q:p is not typed + + ) : ( + + ); expect(vNode).toMatchVDOM(
- + {btn}
1
2
@@ -2581,11 +2608,7 @@ describe.each([
); - await expect(document.querySelector('main')).toMatchDOM( -
- -
- ); + await expect(document.querySelector('main')).toMatchDOM(
{btn}
); }); it('should rerun props subscribers', async () => { @@ -3290,9 +3313,16 @@ describe.each([ }); const { document, container } = await render(, { debug }); const qContainerAttr = { [QContainerAttr]: QContainerValue.HTML }; + const isSsr = render === ssrRenderToDom; + const btn = isSsr ? ( + // @ts-expect-error q:p is not typed + + ) : ( + + ); await expect(document.querySelector('main')).toMatchDOM(
- + {btn}
Hello
@@ -3305,7 +3335,7 @@ describe.each([ await trigger(container.element, 'button', 'click'); await expect(document.querySelector('main')).toMatchDOM(
- + {btn}
{/* TODO: q:container is const and div is reused, is it ok? */}
World
@@ -3319,7 +3349,7 @@ describe.each([ await trigger(container.element, 'button', 'click'); await expect(document.querySelector('main')).toMatchDOM(
- + {btn}
Hello
@@ -3332,7 +3362,7 @@ describe.each([ await trigger(container.element, 'button', 'click'); await expect(document.querySelector('main')).toMatchDOM(
- + {btn}
World
@@ -3345,7 +3375,7 @@ describe.each([ await trigger(container.element, 'button', 'click'); await expect(document.querySelector('main')).toMatchDOM(
- + {btn}
Hello
diff --git a/packages/qwik/src/core/tests/projection.spec.tsx b/packages/qwik/src/core/tests/projection.spec.tsx index c20d75d9715..63e93a428c2 100644 --- a/packages/qwik/src/core/tests/projection.spec.tsx +++ b/packages/qwik/src/core/tests/projection.spec.tsx @@ -17,6 +17,7 @@ import { useVisibleTask$, type JSXNode, type Signal, + $, } from '@qwik.dev/core'; import { domRender, ssrRenderToDom, trigger } from '@qwik.dev/core/testing'; import { cleanupAttrs } from 'packages/qwik/src/testing/element-fixture'; @@ -1366,9 +1367,12 @@ describe.each([ const Parent = component$(() => { const toggle = useSignal(true); + const handler = $(() => { + toggle.value = !toggle.value; + }); return (
- + @@ -1458,14 +1462,12 @@ describe.each([ const Child = component$<{ show: boolean }>((props) => { (globalThis as any).log.push('render:Child'); const show = useSignal(props.show); + const handler = $(() => { + (globalThis as any).log.push('click:Child'); + show.value = !show.value; + }); return ( - { - (globalThis as any).log.push('click:Child'); - show.value = !show.value; - }} - > + {show.value && } ); @@ -1473,14 +1475,12 @@ describe.each([ const Parent = component$<{ content: boolean; slot: boolean }>((props) => { (globalThis as any).log.push('render:Parent'); const show = useSignal(props.content); + const handler = $(() => { + (globalThis as any).log.push('click:Parent'); + show.value = !show.value; + }); return ( -
{ - (globalThis as any).log.push('click:Parent'); - show.value = !show.value; - }} - > +
{show.value && 'child-content'}
); @@ -2706,13 +2706,12 @@ describe.each([ )); const Issue1630 = component$(() => { const store = useStore({ open: true }); + const handler = $(() => { + store.open = !store.open; + }); return (
- + {store.open && }
diff --git a/packages/qwik/src/core/tests/render-namespace.spec.tsx b/packages/qwik/src/core/tests/render-namespace.spec.tsx index e20086b3b8f..7a8b7780bdf 100644 --- a/packages/qwik/src/core/tests/render-namespace.spec.tsx +++ b/packages/qwik/src/core/tests/render-namespace.spec.tsx @@ -96,7 +96,7 @@ describe.each([ ); - await expect(container.document.querySelector('button')).toMatchDOM(); + expect(container.document.querySelector('button')?.innerHTML).toEqual(''); await trigger(container.element, 'button', 'click'); expect(vNode).toMatchVDOM( @@ -123,7 +123,7 @@ describe.each([ ); - await expect(container.document.body.querySelector('button')).toMatchDOM(); + expect(container.document.body.querySelector('button')?.innerHTML).toEqual(''); }); it('should rerender svg nested children', async () => { diff --git a/packages/qwik/src/core/tests/use-signal.spec.tsx b/packages/qwik/src/core/tests/use-signal.spec.tsx index 84edddcbfef..5fc0c469714 100644 --- a/packages/qwik/src/core/tests/use-signal.spec.tsx +++ b/packages/qwik/src/core/tests/use-signal.spec.tsx @@ -2,6 +2,7 @@ import { Fragment as Awaited, Fragment as Component, Fragment, + jsx, Fragment as Projection, Fragment as Signal, useVisibleTask$, @@ -157,7 +158,10 @@ describe.each([ ); - await expect(document.querySelector('button')).toMatchDOM(); + const isSsr = render === ssrRenderToDom; + await expect(document.querySelector('button')).toMatchDOM( + jsx('button', { key: '0', children: 'const 0', ...(isSsr ? { 'q:p': 0 } : {}) }) + ); await trigger(container.element, 'button', 'click'); expect(vNode).toMatchVDOM( @@ -169,7 +173,9 @@ describe.each([ ); - await expect(document.querySelector('button')).toMatchDOM(); + await expect(document.querySelector('button')).toMatchDOM( + jsx('button', { key: '0', children: 'const 1', ...(isSsr ? { 'q:p': 0 } : {}) }) + ); }); it('should handle all ClassList cases', async () => { const Cmp = component$(() => { diff --git a/packages/qwik/src/core/tests/use-task.spec.tsx b/packages/qwik/src/core/tests/use-task.spec.tsx index 85959cb82f3..660de13449a 100644 --- a/packages/qwik/src/core/tests/use-task.spec.tsx +++ b/packages/qwik/src/core/tests/use-task.spec.tsx @@ -724,8 +724,12 @@ describe.each([ await vi.advanceTimersToNextTimerAsync(); const { document } = await renderPromise; + const isSsr = render === ssrRenderToDom; // Initial render - await expect(document.body.firstChild).toMatchDOM(); + await expect(document.body.firstChild).toMatchDOM( + // @ts-expect-error q:p is not typed + isSsr ? : + ); // FIRST CLICK @@ -735,7 +739,10 @@ describe.each([ // Advance timers but not enough to complete the delay await vi.advanceTimersByTimeAsync(99); // Should be still old value - await expect(document.body.firstChild).toMatchDOM(); + await expect(document.body.firstChild).toMatchDOM( + // @ts-expect-error q:p is not typed + isSsr ? : + ); // Advance timers to complete the delay await vi.advanceTimersByTimeAsync(1); // Wait for the trigger to complete @@ -743,7 +750,10 @@ describe.each([ await triggerPromise; // Should have the new value - await expect(document.body.firstChild).toMatchDOM(); + await expect(document.body.firstChild).toMatchDOM( + // @ts-expect-error q:p is not typed + isSsr ? : + ); // SECOND CLICK @@ -753,7 +763,10 @@ describe.each([ // Advance timers but not enough to complete the delay await vi.advanceTimersByTimeAsync(99); // Should be still old value - await expect(document.body.firstChild).toMatchDOM(); + await expect(document.body.firstChild).toMatchDOM( + // @ts-expect-error q:p is not typed + isSsr ? : + ); // Advance timers to complete the delay await vi.advanceTimersByTimeAsync(1); // Wait for the trigger to complete @@ -761,7 +774,10 @@ describe.each([ await triggerPromise; // Should have the new value - await expect(document.body.firstChild).toMatchDOM(); + await expect(document.body.firstChild).toMatchDOM( + // @ts-expect-error q:p is not typed + isSsr ? : + ); vi.useRealTimers(); }); @@ -804,8 +820,12 @@ describe.each([ await vi.advanceTimersToNextTimerAsync(); const { document } = await renderPromise; + const isSsr = render === ssrRenderToDom; // Initial render - await expect(document.body.firstChild).toMatchDOM(); + await expect(document.body.firstChild).toMatchDOM( + // @ts-expect-error q:p is not typed + isSsr ? : + ); // FIRST CLICK @@ -815,14 +835,20 @@ describe.each([ // Advance timers but not enough to complete the delay await vi.advanceTimersByTimeAsync(99); // Should have the new value - await expect(document.body.firstChild).toMatchDOM(); + await expect(document.body.firstChild).toMatchDOM( + // @ts-expect-error q:p is not typed + isSsr ? : + ); // Advance timers to complete the delay await vi.advanceTimersByTimeAsync(1); // Wait for the trigger to complete await triggerPromise; // Should have the new value - await expect(document.body.firstChild).toMatchDOM(); + await expect(document.body.firstChild).toMatchDOM( + // @ts-expect-error q:p is not typed + isSsr ? : + ); // SECOND CLICK @@ -832,14 +858,20 @@ describe.each([ // Advance timers but not enough to complete the delay await vi.advanceTimersByTimeAsync(99); // Should have the new value - await expect(document.body.firstChild).toMatchDOM(); + await expect(document.body.firstChild).toMatchDOM( + // @ts-expect-error q:p is not typed + isSsr ? : + ); // Advance timers to complete the delay await vi.advanceTimersByTimeAsync(1); // Wait for the trigger to complete await triggerPromise; // Should have the new value - await expect(document.body.firstChild).toMatchDOM(); + await expect(document.body.firstChild).toMatchDOM( + // @ts-expect-error q:p is not typed + isSsr ? : + ); vi.useRealTimers(); }); diff --git a/packages/qwik/src/optimizer/core/README.md b/packages/qwik/src/optimizer/core/README.md index 0ebecc5b4e8..1ad5cc1914e 100644 --- a/packages/qwik/src/optimizer/core/README.md +++ b/packages/qwik/src/optimizer/core/README.md @@ -1,7 +1,377 @@ # Qwik Optimizer -See the contributing guide for more install information. If you want to updat the tests, run `pnpm run test.rust.update`. If you want to run a single test with dbg output: +The Qwik optimizer is an SWC-based AST transform that processes TypeScript/JavaScript/JSX source files. Its job is to enable **resumability** — the ability for Qwik applications to serialize their state during SSR and resume on the client without re-executing component code. + +It does this by extracting closures marked with `$` into separate lazy-loadable modules ("segments"), transforming JSX into Qwik's internal representation, capturing lexical scope for serialization, and applying platform-specific dead code elimination. + +## Core Concepts + +### The `$` Marker + +Any function call whose name ends with `$` (e.g., `component$`, `useTask$`, `onClick$`, `$()`) marks a **QRL boundary**. The closure argument is extracted into a separate module (a "segment") that can be lazy-loaded. The call is rewritten to use a **QRL** (Qwik Resource Locator) — a reference containing the import path, symbol name, and captured variables. + +```ts +// Input +useTask$(() => { + console.log(state.count); +}); + +// Output (root module) +useTaskQrl(qrl(() => import('./myFile_useTask_abc123'), 's_abc123', [state])); + +// Output (segment module: myFile_useTask_abc123.js) +import { _captures } from '@qwik.dev/core'; +export const s_abc123 = () => { + const state = _captures[0]; + console.log(state.count); +}; +``` + +### Segments + +A segment is an extracted closure with metadata. Each segment becomes a separate ES module file (in non-inline strategies). The segment module contains: + +1. Imports for all externally-referenced identifiers +2. A `_captures` import if the closure captures lexical variables +3. The closure body as a named export + +### Captures (Scoped Identifiers) + +When a `$`-closure references variables from its enclosing lexical scope (not imports, not module-level declarations), those variables are **captured**. The optimizer: + +1. Identifies captured variables by walking the closure body and checking each identifier against the lexical scope stack +2. Passes them as an array argument to `qrl()`: `qrl(import, "name", [var1, var2])` +3. In the segment module, rewrites the function to read captures from `_captures`: `const var1 = _captures[0]` + +**Exception — event handlers on native elements:** For `$`-props on native elements (e.g., `onClick$` on `; + }); + +============================= test.js == + +import { componentQrl } from "@qwik.dev/core"; +import { qrl } from "@qwik.dev/core"; +// +const _qrl_Test_component_qJXYteHpGTQ = /*#__PURE__*/ qrl(()=>import("./test.tsx_Test_component_qJXYteHpGTQ"), "Test_component_qJXYteHpGTQ"); +// +export const Test = /*#__PURE__*/ componentQrl(_qrl_Test_component_qJXYteHpGTQ); + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAGE,OAAO,MAAM,qBAAO,8CAKjB\"}") +============================= test.tsx_Test_component_qJXYteHpGTQ.js (ENTRY POINT)== + +import { _jsxSorted } from "@qwik.dev/core"; +import { qrl } from "@qwik.dev/core"; +import { useSignal } from "@qwik.dev/core"; +// +const _qrl_Test_component_button_q_e_click_SvzH9HBZLMQ = /*#__PURE__*/ qrl(()=>import("./test.tsx_Test_component_button_q_e_click_SvzH9HBZLMQ"), "Test_component_button_q_e_click_SvzH9HBZLMQ"); +const _qrl_Test_component_button_q_e_dblclick_dxOdkqiOleU = /*#__PURE__*/ qrl(()=>import("./test.tsx_Test_component_button_q_e_dblclick_dxOdkqiOleU"), "Test_component_button_q_e_dblclick_dxOdkqiOleU"); +const _qrl_Test_component_button_q_e_hover_IVVGOMV4FJ4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Test_component_button_q_e_hover_IVVGOMV4FJ4"), "Test_component_button_q_e_hover_IVVGOMV4FJ4"); +// +export const Test_component_qJXYteHpGTQ = ()=>{ + const sig = useSignal(0); + const foo = useSignal('foo'); + const bar = useSignal('bar'); + return /*#__PURE__*/ _jsxSorted("button", { + "q:ps": [ + bar, + foo, + sig + ] + }, { + "q-e:click": _qrl_Test_component_button_q_e_click_SvzH9HBZLMQ, + "q-e:dblclick": _qrl_Test_component_button_q_e_dblclick_dxOdkqiOleU, + "q-e:hover": _qrl_Test_component_button_q_e_hover_IVVGOMV4FJ4 + }, sig, 7, "u6_0"); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;0CAGiC;IAC9B,MAAM,MAAM,UAAU;IACtB,MAAM,MAAM,UAAU;IACtB,MAAM,MAAM,UAAU;IACtB,qBAAO,WAAC;;;;;;;QAAO,WAAQ;QAAqB,cAAW;QAA8B,WAAQ;OAA+B;AAC7H\"}") +/* +{ + "origin": "test.tsx", + "name": "Test_component_qJXYteHpGTQ", + "entry": null, + "displayName": "test.tsx_Test_component", + "hash": "qJXYteHpGTQ", + "canonicalFilename": "test.tsx_Test_component_qJXYteHpGTQ", + "path": "", + "extension": "js", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 97, + 345 + ] +} +*/ +============================= test.tsx_Test_component_button_q_e_hover_IVVGOMV4FJ4.js (ENTRY POINT)== + +export const Test_component_button_q_e_hover_IVVGOMV4FJ4 = (_, _1, bar, _3, sig)=>sig.value += bar.value; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"2DAOkG,uBAAM,IAAI,KAAK,IAAE,IAAI,KAAK\"}") +/* +{ + "origin": "test.tsx", + "name": "Test_component_button_q_e_hover_IVVGOMV4FJ4", + "entry": null, + "displayName": "test.tsx_Test_component_button_q_e_hover", + "hash": "IVVGOMV4FJ4", + "canonicalFilename": "test.tsx_Test_component_button_q_e_hover_IVVGOMV4FJ4", + "path": "", + "extension": "js", + "parent": "Test_component_qJXYteHpGTQ", + "ctxKind": "eventHandler", + "ctxName": "onHover$", + "captures": false, + "loc": [ + 298, + 324 + ], + "paramNames": [ + "_", + "_1", + "bar", + "_3", + "sig" + ] +} +*/ +============================= test.tsx_Test_component_button_q_e_click_SvzH9HBZLMQ.js (ENTRY POINT)== + +export const Test_component_button_q_e_click_SvzH9HBZLMQ = (_, _1, _2, _3, sig)=>sig.value++; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"2DAO4B,sBAAM,IAAI,KAAK\"}") +/* +{ + "origin": "test.tsx", + "name": "Test_component_button_q_e_click_SvzH9HBZLMQ", + "entry": null, + "displayName": "test.tsx_Test_component_button_q_e_click", + "hash": "SvzH9HBZLMQ", + "canonicalFilename": "test.tsx_Test_component_button_q_e_click_SvzH9HBZLMQ", + "path": "", + "extension": "js", + "parent": "Test_component_qJXYteHpGTQ", + "ctxKind": "eventHandler", + "ctxName": "onClick$", + "captures": false, + "loc": [ + 228, + 245 + ], + "paramNames": [ + "_", + "_1", + "_2", + "_3", + "sig" + ] +} +*/ +============================= test.tsx_Test_component_button_q_e_dblclick_dxOdkqiOleU.js (ENTRY POINT)== + +export const Test_component_button_q_e_dblclick_dxOdkqiOleU = (_, _1, _2, foo, sig)=>foo.value += sig.value; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"8DAO4D,uBAAM,IAAI,KAAK,IAAE,IAAI,KAAK\"}") +/* +{ + "origin": "test.tsx", + "name": "Test_component_button_q_e_dblclick_dxOdkqiOleU", + "entry": null, + "displayName": "test.tsx_Test_component_button_q_e_dblclick", + "hash": "dxOdkqiOleU", + "canonicalFilename": "test.tsx_Test_component_button_q_e_dblclick_dxOdkqiOleU", + "path": "", + "extension": "js", + "parent": "Test_component_qJXYteHpGTQ", + "ctxKind": "eventHandler", + "ctxName": "onDblClick$", + "captures": false, + "loc": [ + 260, + 286 + ], + "paramNames": [ + "_", + "_1", + "_2", + "foo", + "sig" + ] +} +*/ +== DIAGNOSTICS == + +[] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index.snap index 5889c30f7f2..2c6c2972735 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index.snap @@ -114,7 +114,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ item, index ] - }, null, item, 0, "u6_0"); + }, null, item, 4, "u6_0"); }), 1, "u6_1"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index_and_capture_ref.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index_and_capture_ref.snap index 3bb6099b4c9..a81ae6ef9a4 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index_and_capture_ref.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index_and_capture_ref.snap @@ -142,7 +142,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ item, index ] - }, null, item, 0, "u6_0"); + }, null, item, 4, "u6_0"); }), 1, "u6_1"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl.snap index 1b94a89e6df..59d2a17e418 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl.snap @@ -145,7 +145,7 @@ export const App_component_ckEPmXZlub0 = ()=>{ "q:p": row }, null, _fnSignal(_hf2, [ row - ], _hf2_str), 0, null), 1, null), + ], _hf2_str), 4, null), 1, null), /*#__PURE__*/ _jsxSorted("td", null, { class: "col-md-1" }, /*#__PURE__*/ _jsxSorted("a", { @@ -153,7 +153,7 @@ export const App_component_ckEPmXZlub0 = ()=>{ "q:p": row }, null, /*#__PURE__*/ _jsxSorted("span", null, { "aria-hidden": "true" - }, "x", 3, null), 2, null), 1, null), + }, "x", 3, null), 6, null), 1, null), /*#__PURE__*/ _jsxSorted("td", null, { class: "col-md-6" }, null, 3, null) diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_2.snap index 116e304b399..8c721e3fccd 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_2.snap @@ -38,18 +38,13 @@ expression: output ============================= test.tsx_Parent_component_div_button_q_e_click_5khsVRINUws.js (ENTRY POINT)== -import { _captures } from "@qwik.dev/core"; -// -export const Parent_component_div_button_q_e_click_5khsVRINUws = ()=>{ - const results = _captures[0]; - return results.value = [ +export const Parent_component_div_button_q_e_click_5khsVRINUws = (_, _1, results)=>results.value = [ 'item1', 'item2' ]; -}; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;iEAQuC;;WAAO,QAAQ,KAAK,GAAG;QAAC;QAAS;KAAQ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"iEAQuC,kBAAO,QAAQ,KAAK,GAAG;QAAC;QAAS;KAAQ\"}") /* { "origin": "test.tsx", @@ -63,12 +58,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma "parent": "Parent_component_0TaiDayHrlo", "ctxKind": "eventHandler", "ctxName": "onClick$", - "captures": true, + "captures": false, "loc": [ 268, 310 ], - "captureNames": [ + "paramNames": [ + "_", + "_1", "results" ] } @@ -91,7 +88,7 @@ import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; import { useStore } from "@qwik.dev/core"; // -const i_5khsVRINUws = ()=>import("./test.tsx_Parent_component_div_button_q_e_click_5khsVRINUws"); +const _qrl_Parent_component_div_button_q_e_click_5khsVRINUws = /*#__PURE__*/ qrl(()=>import("./test.tsx_Parent_component_div_button_q_e_click_5khsVRINUws"), "Parent_component_div_button_q_e_click_5khsVRINUws"); const i_rAeuW6OvuXM = ()=>import("./test.tsx_Parent_component_div_button_q_e_click_1_rAeuW6OvuXM"); // export const Parent_component_0TaiDayHrlo = ()=>{ @@ -104,23 +101,23 @@ export const Parent_component_0TaiDayHrlo = ()=>{ cart ]); return /*#__PURE__*/ _jsxSorted("div", null, null, [ - /*#__PURE__*/ _jsxSorted("button", null, { + /*#__PURE__*/ _jsxSorted("button", { + "q:p": results + }, { id: "first", - "q-e:click": /*#__PURE__*/ qrl(i_5khsVRINUws, "Parent_component_div_button_q_e_click_5khsVRINUws", [ - results - ]) - }, null, 3, null), + "q-e:click": _qrl_Parent_component_div_button_q_e_click_5khsVRINUws + }, null, 7, null), results.value.map((item, key)=>/*#__PURE__*/ _jsxSorted("button", { id: 'second-' + key, "q-e:click": Parent_component_div_button_q_e_click_1_rAeuW6OvuXM, "q:p": item - }, null, item, 0, "u6_0")), + }, null, item, 4, "u6_0")), /*#__PURE__*/ _jsxSorted("ul", null, null, cart.map((item)=>/*#__PURE__*/ _jsxSorted("li", null, null, /*#__PURE__*/ _jsxSorted("span", null, null, item, 1, null), 1, "u6_1")), 1, null) ], 1, "u6_2"); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;4CAEgC;IAC1B,MAAM,OAAO,SAAe,EAAE;IAC9B,MAAM,UAAU,UAAU;QAAC;QAAO;KAAM;;;;IAExC,qBACE,WAAC;sBACC,WAAC;YAAO,IAAG;YAAQ,WAAQ;;;;QAE1B,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,oBACxB,WAAC;gBACC,IAAI,YAAY;gBAChB,WAAQ;uBAHQ;qBAOf;sBAGL,WAAC,kBACE,KAAK,GAAG,CAAC,CAAC,qBACT,WAAC,gCACC,WAAC,oBAAM;;AAMnB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;4CAEgC;IAC1B,MAAM,OAAO,SAAe,EAAE;IAC9B,MAAM,UAAU,UAAU;QAAC;QAAO;KAAM;;;;IAExC,qBACE,WAAC;sBACC,WAAC;;;YAAO,IAAG;YAAQ,WAAQ;;QAE1B,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,oBACxB,WAAC;gBACC,IAAI,YAAY;gBAChB,WAAQ;uBAHQ;qBAOf;sBAGL,WAAC,kBACE,KAAK,GAAG,CAAC,CAAC,qBACT,WAAC,gCACC,WAAC,oBAAM;;AAMnB\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_index.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_index.snap index 6e091c421ac..963111e865e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_index.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_index.snap @@ -152,7 +152,7 @@ export const App_component_ckEPmXZlub0 = ()=>{ ] }, null, _fnSignal(_hf2, [ row - ], _hf2_str), 0, null), 1, null), + ], _hf2_str), 4, null), 1, null), /*#__PURE__*/ _jsxSorted("td", null, { class: "col-md-1" }, /*#__PURE__*/ _jsxSorted("a", { @@ -160,7 +160,7 @@ export const App_component_ckEPmXZlub0 = ()=>{ "q:p": row }, null, /*#__PURE__*/ _jsxSorted("span", null, { "aria-hidden": "true" - }, "x", 3, null), 2, null), 1, null), + }, "x", 3, null), 6, null), 1, null), /*#__PURE__*/ _jsxSorted("td", null, { class: "col-md-6" }, null, 3, null) diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_nested_components.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_nested_components.snap index 8ddce7ee260..cede63eeeda 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_nested_components.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_nested_components.snap @@ -84,7 +84,7 @@ export const Foo_component_Inner_component_AuJ9mTBx5YA = (props)=>{ "q:p": item }, null, _fnSignal(_hf0, [ item - ], _hf0_str), 0, "u6_0")), 1, "u6_1"); + ], _hf0_str), 4, "u6_0")), 1, "u6_1"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_handle_dangerously_set_inner_html.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_handle_dangerously_set_inner_html.snap index 748c69ffc07..f029882a2df 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_handle_dangerously_set_inner_html.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_handle_dangerously_set_inner_html.snap @@ -42,15 +42,10 @@ const _qrl_Cmp_component_4ryKJTOKjWE = /*#__PURE__*/ qrl(()=>import("./test.tsx_ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;cAEc\"}") ============================= test.tsx_Cmp_component_div_div_button_q_e_click_kOQ2BgBVVS8.js (ENTRY POINT)== -import { _captures } from "@qwik.dev/core"; -// -export const Cmp_component_div_div_button_q_e_click_kOQ2BgBVVS8 = ()=>{ - const htmlSignal = _captures[0]; - return htmlSignal.value = "

I'm a updated signal value!

"; -}; +export const Cmp_component_div_div_button_q_e_click_kOQ2BgBVVS8 = (_, _1, htmlSignal)=>htmlSignal.value = "

I'm a updated signal value!

"; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;kEAeiB;;WACR,WAAW,KAAK,GAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"kEAeiB,qBACR,WAAW,KAAK,GAAG\"}") /* { "origin": "test.tsx", @@ -64,12 +59,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma "parent": "Cmp_component_4ryKJTOKjWE", "ctxKind": "eventHandler", "ctxName": "onClick$", - "captures": true, + "captures": false, "loc": [ 510, 596 ], - "captureNames": [ + "paramNames": [ + "_", + "_1", "htmlSignal" ] } @@ -80,7 +77,7 @@ import { _jsxSorted } from "@qwik.dev/core"; import { _wrapProp } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; // -const i_kOQ2BgBVVS8 = ()=>import("./test.tsx_Cmp_component_div_div_button_q_e_click_kOQ2BgBVVS8"); +const _qrl_Cmp_component_div_div_button_q_e_click_kOQ2BgBVVS8 = /*#__PURE__*/ qrl(()=>import("./test.tsx_Cmp_component_div_div_button_q_e_click_kOQ2BgBVVS8"), "Cmp_component_div_div_button_q_e_click_kOQ2BgBVVS8"); // export const Cmp_component_4ryKJTOKjWE = ()=>{ const htmlSignal = useSignal("

I'm a signal value!

"); @@ -100,17 +97,17 @@ export const Cmp_component_4ryKJTOKjWE = ()=>{ dangerouslySetInnerHTML: _wrapProp(htmlSignal), class: "after" }, null, 3, null), - /*#__PURE__*/ _jsxSorted("button", null, { - "q-e:click": /*#__PURE__*/ qrl(i_kOQ2BgBVVS8, "Cmp_component_div_div_button_q_e_click_kOQ2BgBVVS8", [ - htmlSignal - ]) - }, null, 3, null) - ], 3, null) - ], 3, "u6_0"); + /*#__PURE__*/ _jsxSorted("button", { + "q:p": htmlSignal + }, { + "q-e:click": _qrl_Cmp_component_div_div_button_q_e_click_kOQ2BgBVVS8 + }, null, 7, null) + ], 1, null) + ], 1, "u6_0"); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;yCAEyB;IACtB,MAAM,aAAa,UAAU;IAC7B,qBACC,WAAC;sBACA,WAAC,iCACA,WAAC;YAAK,IAAG;YAAQ,yBAAwB;;sBAE1C,WAAC,iCACA,WAAC;YAAK,IAAG;YAAS,yBAAwB;YAAsB,OAAM;;sBAEvE,WAAC;0BACA,WAAC;gBAAK,IAAG;gBAAQ,uBAAuB,YAAE;gBAAkB,OAAM;;0BAClE,WAAC;gBACA,WAAQ;;;;;;AAOb\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;yCAEyB;IACtB,MAAM,aAAa,UAAU;IAC7B,qBACC,WAAC;sBACA,WAAC,iCACA,WAAC;YAAK,IAAG;YAAQ,yBAAwB;;sBAE1C,WAAC,iCACA,WAAC;YAAK,IAAG;YAAS,yBAAwB;YAAsB,OAAM;;sBAEvE,WAAC;0BACA,WAAC;gBAAK,IAAG;gBAAQ,uBAAuB,YAAE;gBAAkB,OAAM;;0BAClE,WAAC;;;gBACA,WAAQ;;;;AAOb\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_fn.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_fn.snap index 6fe2a807556..f73d06646e1 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_fn.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_fn.snap @@ -44,7 +44,7 @@ import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; // -const i_veAZ2ow0cnM = ()=>import("./test.tsx_Cmp_component_Fragment_button_q_e_click_veAZ2ow0cnM"); +const _qrl_Cmp_component_Fragment_button_q_e_click_veAZ2ow0cnM = /*#__PURE__*/ qrl(()=>import("./test.tsx_Cmp_component_Fragment_button_q_e_click_veAZ2ow0cnM"), "Cmp_component_Fragment_button_q_e_click_veAZ2ow0cnM"); // export const Cmp_component_4ryKJTOKjWE = ()=>{ const currentStep = useSignal('STEP_1'); @@ -53,11 +53,11 @@ export const Cmp_component_4ryKJTOKjWE = ()=>{ return step === 'STEP_1' ? 'STEP_2' : 'STEP_1'; }; return /*#__PURE__*/ _jsxSorted(_Fragment, null, null, [ - /*#__PURE__*/ _jsxSorted("button", null, { - "q-e:click": /*#__PURE__*/ qrl(i_veAZ2ow0cnM, "Cmp_component_Fragment_button_q_e_click_veAZ2ow0cnM", [ - currentType - ]) - }, "CLICK", 3, null), + /*#__PURE__*/ _jsxSorted("button", { + "q:p": currentType + }, { + "q-e:click": _qrl_Cmp_component_Fragment_button_q_e_click_veAZ2ow0cnM + }, "CLICK", 7, null), /*#__PURE__*/ _jsxSorted(A, { href: getStep(currentStep.value, currentType.value) }, null, null, 3, "u6_0") @@ -65,7 +65,7 @@ export const Cmp_component_4ryKJTOKjWE = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;yCAI8B;IAC7B,MAAM,cAAc,UAAU;IAC9B,MAAM,cAAc,UAA+B;IAEnD,MAAM,UAAU,CAAC,MAAc;QAC9B,OAAO,SAAS,WAAW,WAAW;IACvC;IAEA,qBACC;sBACC,WAAC;YAAO,WAAQ;;;WAAsC;sBACtD,WAAC;YAAE,MAAM,QAAQ,YAAY,KAAK,EAAE,YAAY,KAAK;;;AAGxD\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;yCAI8B;IAC7B,MAAM,cAAc,UAAU;IAC9B,MAAM,cAAc,UAA+B;IAEnD,MAAM,UAAU,CAAC,MAAc;QAC9B,OAAO,SAAS,WAAW,WAAW;IACvC;IAEA,qBACC;sBACC,WAAC;;;YAAO,WAAQ;WAAsC;sBACtD,WAAC;YAAE,MAAM,QAAQ,YAAY,KAAK,EAAE,YAAY,KAAK;;;AAGxD\"}") /* { "origin": "test.tsx", @@ -88,15 +88,10 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma */ ============================= test.tsx_Cmp_component_Fragment_button_q_e_click_veAZ2ow0cnM.js (ENTRY POINT)== -import { _captures } from "@qwik.dev/core"; -// -export const Cmp_component_Fragment_button_q_e_click_veAZ2ow0cnM = ()=>{ - const currentType = _captures[0]; - return currentType.value = 'NEXT'; -}; +export const Cmp_component_Fragment_button_q_e_click_veAZ2ow0cnM = (_, _1, currentType)=>currentType.value = 'NEXT'; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;mEAcqB;;WAAO,YAAY,KAAK,GAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"mEAcqB,sBAAO,YAAY,KAAK,GAAG\"}") /* { "origin": "test.tsx", @@ -110,12 +105,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma "parent": "Cmp_component_4ryKJTOKjWE", "ctxKind": "eventHandler", "ctxName": "onClick$", - "captures": true, + "captures": false, "loc": [ 394, 428 ], - "captureNames": [ + "paramNames": [ + "_", + "_1", "currentType" ] } diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop4.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop4.snap index 850f9f6ec96..23a8beef615 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop4.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop4.snap @@ -25,15 +25,10 @@ export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAGE,6BAAe,8CAEZ\"}") ============================= test.tsx_test_component_button_q_e_click_qwSL5gM03T4.js (ENTRY POINT)== -import { _captures } from "@qwik.dev/core"; -// -export const test_component_button_q_e_click_qwSL5gM03T4 = ()=>{ - const props = _captures[0]; - return props.onClick$(); -}; +export const test_component_button_q_e_click_qwSL5gM03T4 = (_, _1, props)=>props.onClick$(); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;2DAIuC;;WAAM,MAAM,QAAQ\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"2DAIuC,gBAAM,MAAM,QAAQ\"}") /* { "origin": "test.tsx", @@ -47,12 +42,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma "parent": "test_component_LUXeXe0DQrg", "ctxKind": "eventHandler", "ctxName": "onClick$", - "captures": true, + "captures": false, "loc": [ 135, 157 ], - "captureNames": [ + "paramNames": [ + "_", + "_1", "props" ] } @@ -64,19 +61,18 @@ import { _getVarProps } from "@qwik.dev/core"; import { _jsxSplit } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; // -const i_qwSL5gM03T4 = ()=>import("./test.tsx_test_component_button_q_e_click_qwSL5gM03T4"); +const _qrl_test_component_button_q_e_click_qwSL5gM03T4 = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_button_q_e_click_qwSL5gM03T4"), "test_component_button_q_e_click_qwSL5gM03T4"); // export const test_component_LUXeXe0DQrg = (props)=>{ return /*#__PURE__*/ _jsxSplit("button", { ..._getVarProps(props), - "q-e:click": /*#__PURE__*/ qrl(i_qwSL5gM03T4, "test_component_button_q_e_click_qwSL5gM03T4", [ - props - ]) - }, _getConstProps(props), null, 0, "u6_0"); + "q-e:click": _qrl_test_component_button_q_e_click_qwSL5gM03T4, + "q:p": props + }, _getConstProps(props), null, 4, "u6_0"); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;0CAG4B,CAAC;IAC1B,qBAAO,UAAC;wBAAW;QAAO,WAAQ;;;sBAAf;AACpB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;0CAG4B,CAAC;IAC1B,qBAAO,UAAC;wBAAW;QAAO,WAAQ;;sBAAf;AACpB\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_and_item_index_in_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_and_item_index_in_loop.snap index d3770dd24dc..0707162f35c 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_and_item_index_in_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_and_item_index_in_loop.snap @@ -86,7 +86,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ i, index ] - }, null, val, 0, "u6_0"); + }, null, val, 4, "u6_0"); }), 1, "u6_1"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_in_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_in_loop.snap index 756a5e8ad03..f4795fd1950 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_in_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_in_loop.snap @@ -80,7 +80,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ return /*#__PURE__*/ _jsxSorted("div", { "q-e:click": _qrl_test_component_div_div_q_e_click_Mc600uqO6ps, "q:p": index - }, null, val, 0, "u6_0"); + }, null, val, 4, "u6_0"); }), 1, "u6_1"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_component_with_normal_function.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_component_with_normal_function.snap index f8d2cd350b0..54f5f79cf70 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_component_with_normal_function.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_component_with_normal_function.snap @@ -84,7 +84,7 @@ export const Foo_component_Inner_component_AuJ9mTBx5YA = function(props) { "q:p": item }, null, _fnSignal(_hf0, [ item - ], _hf0_str), 0, "u6_0")), 1, "u6_1"); + ], _hf0_str), 4, "u6_0")), 1, "u6_1"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handler_in_for_of_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handler_in_for_of_loop.snap index 766781fe6b9..8f36c87bb31 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handler_in_for_of_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handler_in_for_of_loop.snap @@ -78,7 +78,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ for (const val of arr.value)items.push(/*#__PURE__*/ _jsxSorted("div", { "q-e:click": _qrl_test_component_div_q_e_click_omwK2O280Tk, "q:p": val - }, null, val, 2, "u6_0")); + }, null, val, 6, "u6_0")); return /*#__PURE__*/ _jsxSorted("div", null, null, items, 1, "u6_1"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handlers_capturing_cross_scope_in_nested_loops.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handlers_capturing_cross_scope_in_nested_loops.snap index d7cc1034091..1a1dd4922a1 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handlers_capturing_cross_scope_in_nested_loops.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handlers_capturing_cross_scope_in_nested_loops.snap @@ -158,14 +158,14 @@ export const test_component_LUXeXe0DQrg = ()=>{ /*#__PURE__*/ _jsxSorted("button", { "q-e:click": test_component_div_div_span_button_q_e_click_oBFNw2cK30o, "q:p": cellIndex - }, null, cell, 0, null), + }, null, cell, 4, null), /*#__PURE__*/ _jsxSorted("span", { "q-e:keydown": test_component_div_div_span_span_q_e_keydown_SBPovprktLQ, "q:ps": [ j, cellKey ] - }, null, cellKey, 0, null) + }, null, cellKey, 4, null) ], 1, j); }), 1, i); }), 1, "u6_0"); diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_loop_multiple_handler_with_different_captures.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_loop_multiple_handler_with_different_captures.snap index adfd5691468..e7c755ba08e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_loop_multiple_handler_with_different_captures.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_loop_multiple_handler_with_different_captures.snap @@ -132,7 +132,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ plusTwo, double ] - }, null, val, 0, "u6_0"); + }, null, val, 4, "u6_0"); }), 1, "u6_1"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_and_item_index_in_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_and_item_index_in_loop.snap index cb0b34144dd..d00a5b56135 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_and_item_index_in_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_and_item_index_in_loop.snap @@ -90,7 +90,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ index, value ] - }, null, val, 0, "u6_0"); + }, null, val, 4, "u6_0"); }), 1, "u6_1"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_in_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_in_loop.snap index 3f114b14e5a..7d5d87784ff 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_in_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_in_loop.snap @@ -86,7 +86,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ index, value ] - }, null, val, 0, "u6_0"); + }, null, val, 4, "u6_0"); }), 1, "u6_1"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers.snap index 2998167d0be..ed343fcedf2 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers.snap @@ -48,7 +48,7 @@ export const Foo_component_HTDRsvUbLiE = function() { }, null, /*#__PURE__*/ _jsxSorted("p", { "q-e:click": _qrl_Foo_component_div_div_p_q_e_click_PjMbeUzoAMk, "q:p": row - }, null, item.value.id, 0, null), 0, "u6_0")), 1, "u6_1"); + }, null, item.value.id, 4, null), 4, "u6_0")), 1, "u6_1"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers_case2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers_case2.snap index dd676c30af2..de8ffc63f8f 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers_case2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers_case2.snap @@ -51,7 +51,7 @@ export const Foo_component_HTDRsvUbLiE = function() { }, null, /*#__PURE__*/ _jsxSorted("p", { "q-e:click": _qrl_Foo_component_div_div_p_q_e_click_PjMbeUzoAMk, "q:p": row - }, null, item.value.id, 0, null), 0, "u6_0")), 1, "u6_1"); + }, null, item.value.id, 4, null), 4, "u6_0")), 1, "u6_1"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops.snap index 7d49b108a35..852d49bd9b5 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops.snap @@ -66,7 +66,7 @@ export const Foo_component_HTDRsvUbLiE = function() { _fnSignal(_hf0, [ item ], _hf0_str) - ], 0, "u6_0")), 0, "u6_1"); + ], 4, "u6_0")), 4, "u6_1"); }), 1, "u6_2"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops_handler_captures_only_inner_scope.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops_handler_captures_only_inner_scope.snap index 96acede06e7..de0d58e7a3e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops_handler_captures_only_inner_scope.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops_handler_captures_only_inner_scope.snap @@ -94,7 +94,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ return /*#__PURE__*/ _jsxSorted("span", null, null, /*#__PURE__*/ _jsxSorted("button", { "q-e:click": _qrl_test_component_div_div_span_button_q_e_click_oBFNw2cK30o, "q:p": cellKey - }, null, cell, 0, null), 1, j); + }, null, cell, 4, null), 1, j); }), 1, i)), 1, "u6_0"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_qrls_in_ternary_expression.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_qrls_in_ternary_expression.snap index d60b6f30122..926e9f82850 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_qrls_in_ternary_expression.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_qrls_in_ternary_expression.snap @@ -31,15 +31,12 @@ export const FieldInput = component$(() => { ============================= test.tsx_FieldInput_component_input_q_e_focus_Sgf3MDWzexI.js (ENTRY POINT)== -import { _captures } from "@qwik.dev/core"; -// -export const FieldInput_component_input_q_e_focus_Sgf3MDWzexI = ()=>{ - const enabled = _captures[0]; +export const FieldInput_component_input_q_e_focus_Sgf3MDWzexI = (_, _1, enabled)=>{ enabled.value = true; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;gEAiBY;;IACT,QAAQ,KAAK,GAAG\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"gEAiBY;IACT,QAAQ,KAAK,GAAG;AACjB\"}") /* { "origin": "test.tsx", @@ -53,12 +50,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma "parent": "FieldInput_component_V4XAtJSTRKg", "ctxKind": "eventHandler", "ctxName": "onFocus$", - "captures": true, + "captures": false, "loc": [ 324, 360 ], - "captureNames": [ + "paramNames": [ + "_", + "_1", "enabled" ] } @@ -80,7 +79,7 @@ import { _jsxSorted } from "@qwik.dev/core"; import { qrl } from "@qwik.dev/core"; import { useSignal } from "@qwik.dev/core"; // -const i_Sgf3MDWzexI = ()=>import("./test.tsx_FieldInput_component_input_q_e_focus_Sgf3MDWzexI"); +const _qrl_FieldInput_component_input_q_e_focus_Sgf3MDWzexI = /*#__PURE__*/ qrl(()=>import("./test.tsx_FieldInput_component_input_q_e_focus_Sgf3MDWzexI"), "FieldInput_component_input_q_e_focus_Sgf3MDWzexI"); const i_wqR1xEjZjf4 = ()=>import("./test.tsx_FieldInput_component_input_q_e_input_wqR1xEjZjf4"); // export const FieldInput_component_V4XAtJSTRKg = ()=>{ @@ -89,17 +88,16 @@ export const FieldInput_component_V4XAtJSTRKg = ()=>{ return /*#__PURE__*/ _jsxSorted("input", { "q-e:input": enabled.value ? /*#__PURE__*/ qrl(i_wqR1xEjZjf4, "FieldInput_component_input_q_e_input_wqR1xEjZjf4", [ input - ]) : undefined + ]) : undefined, + "q:p": enabled }, { id: "input", - "q-e:focus": /*#__PURE__*/ qrl(i_Sgf3MDWzexI, "FieldInput_component_input_q_e_focus_Sgf3MDWzexI", [ - enabled - ]) - }, null, 2, "u6_0"); + "q-e:focus": _qrl_FieldInput_component_input_q_e_focus_Sgf3MDWzexI + }, null, 6, "u6_0"); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;gDAGqC;IACpC,MAAM,UAAU,UAAU;IAC1B,MAAM,QAAQ,UAAU;IAEvB,qBACG,WAAC;qBAGJ,QAAQ,KAAK;;aAIV;;QANH,IAAG;QAQH,WAAQ;;;;AAKV\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;gDAGqC;IACpC,MAAM,UAAU,UAAU;IAC1B,MAAM,QAAQ,UAAU;IAEvB,qBACG,WAAC;qBAGJ,QAAQ,KAAK;;aAIV;;;QANH,IAAG;QAQH,WAAQ;;AAKV\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_same_element_one_handler_with_captures_one_without.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_same_element_one_handler_with_captures_one_without.snap index 03446210db9..5329e1dafa0 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_same_element_one_handler_with_captures_one_without.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_same_element_one_handler_with_captures_one_without.snap @@ -120,7 +120,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ "q:p": index }, { "q-e:keydown": _qrl_test_component_div_div_q_e_keydown_a6RR59yQlXM - }, val, 0, "u6_0"); + }, val, 4, "u6_0"); }), 1, "u6_1"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_two_handlers_capturing_different_block_scope_in_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_two_handlers_capturing_different_block_scope_in_loop.snap index 1ab83ca3deb..c4cc5581737 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_two_handlers_capturing_different_block_scope_in_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_two_handlers_capturing_different_block_scope_in_loop.snap @@ -120,11 +120,11 @@ export const test_component_LUXeXe0DQrg = ()=>{ /*#__PURE__*/ _jsxSorted("button", { "q-e:click": _qrl_test_component_div_div_button_q_e_click_hCFE1Zqizzw, "q:p": index - }, null, val, 0, null), + }, null, val, 4, null), /*#__PURE__*/ _jsxSorted("span", { "q-e:keydown": _qrl_test_component_div_div_span_q_e_keydown_JMCQrlWndWA, "q:p": label - }, null, label, 0, null) + }, null, label, 4, null) ], 1, "u6_0"); }), 1, "u6_1"); }; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_prop_from_destructured_array.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_prop_from_destructured_array.snap index e491decec9c..a3340a6832e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_prop_from_destructured_array.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_prop_from_destructured_array.snap @@ -68,15 +68,12 @@ export default /*#__PURE__*/ componentQrl(_qrl_test_component_LUXeXe0DQrg); Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;AAIE,OAAO,MAAM,sBAAQ,+CAanB;AAEF,6BAAe,8CA2BZ\"}") ============================= test.tsx_test_component_div_button_q_e_click_2TvarUvNGmU.js (ENTRY POINT)== -import { _captures } from "@qwik.dev/core"; -// -export const test_component_div_button_q_e_click_2TvarUvNGmU = ()=>{ - const store = _captures[0]; +export const test_component_div_button_q_e_click_2TvarUvNGmU = (_, _1, store)=>{ store.errors.test = store.errors.test ? undefined : 'ERROR TEST'; }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;+DA8BuB;;IACjB,MAAM,MAAM,CAAC,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,GAAG,YAAY\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"+DA8BuB;IACjB,MAAM,MAAM,CAAC,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,GAAG,YAAY;AACrD\"}") /* { "origin": "test.tsx", @@ -90,12 +87,14 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma "parent": "test_component_LUXeXe0DQrg", "ctxKind": "eventHandler", "ctxName": "onClick$", - "captures": true, + "captures": false, "loc": [ 835, 921 ], - "captureNames": [ + "paramNames": [ + "_", + "_1", "store" ] } @@ -115,7 +114,7 @@ const _hf0_str = "p0.errors.test"; const _hf1 = (p0)=>p0.store5.errors.test; const _hf1_str = "p0.store5.errors.test"; // -const i_2TvarUvNGmU = ()=>import("./test.tsx_test_component_div_button_q_e_click_2TvarUvNGmU"); +const _qrl_test_component_div_button_q_e_click_2TvarUvNGmU = /*#__PURE__*/ qrl(()=>import("./test.tsx_test_component_div_button_q_e_click_2TvarUvNGmU"), "test_component_div_button_q_e_click_2TvarUvNGmU"); // export const test_component_LUXeXe0DQrg = ()=>{ const [store, math] = [ @@ -146,11 +145,11 @@ export const test_component_LUXeXe0DQrg = ()=>{ const [store4] = useForm(); const form2 = useForm2(); return /*#__PURE__*/ _jsxSorted("div", null, null, [ - /*#__PURE__*/ _jsxSorted("button", null, { - "q-e:click": /*#__PURE__*/ qrl(i_2TvarUvNGmU, "test_component_div_button_q_e_click_2TvarUvNGmU", [ - store - ]) - }, "click", 3, null), + /*#__PURE__*/ _jsxSorted("button", { + "q:p": store + }, { + "q-e:click": _qrl_test_component_div_button_q_e_click_2TvarUvNGmU + }, "click", 7, null), /*#__PURE__*/ _jsxSorted(Input, { math: math, math2: math2, @@ -177,7 +176,7 @@ export const test_component_LUXeXe0DQrg = ()=>{ }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;mBAkCa,GAAM,MAAM,CAAC,IAAI;;mBAIhB,GAZJ,OAYW,MAAM,CAAC,IAAI;;;;;0CAnBJ;IACzB,MAAM,CAAC,OAAO,KAAK,GAAG;QAAC,SAAS;YAAC,QAAQ,CAAC;QAAC;QAAI,KAAK,MAAM;KAAG;IAC7D,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG;QAAC;YAAC,SAAS;gBAAC,QAAQ,CAAC;YAAC;SAAG;KAAC;IAC7C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;QAAE,QAAQ,SAAS;YAAC,QAAQ,CAAC;QAAC;QAAI,OAAO,KAAK,MAAM;IAAG;IACjF,MAAM,QAAQ;QAAC,KAAK,MAAM;KAAG;IAC7B,MAAM,EAAE,KAAK,EAAE,GAAG;QAAE,OAAO,KAAK,MAAM;IAAG;IACzC,MAAM,CAAC,OAAO,GAAG;IACjB,MAAM,QAAW;IAEjB,qBACC,WAAC;sBACA,WAAC;YAAO,WAAQ;;;WAEb;sBACH,WAAC;YAMA,MAAM;YACN,OAAO;YACP,OAAO;YACP,OAAO;;YARP,KAAK;;;YACL,MAAM;;;YACN,MAAM;;;YACN,MAAM;;;YACN,MAAM;;;;;AAQV\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;mBAkCa,GAAM,MAAM,CAAC,IAAI;;mBAIhB,GAZJ,OAYW,MAAM,CAAC,IAAI;;;;;0CAnBJ;IACzB,MAAM,CAAC,OAAO,KAAK,GAAG;QAAC,SAAS;YAAC,QAAQ,CAAC;QAAC;QAAI,KAAK,MAAM;KAAG;IAC7D,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG;QAAC;YAAC,SAAS;gBAAC,QAAQ,CAAC;YAAC;SAAG;KAAC;IAC7C,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;QAAE,QAAQ,SAAS;YAAC,QAAQ,CAAC;QAAC;QAAI,OAAO,KAAK,MAAM;IAAG;IACjF,MAAM,QAAQ;QAAC,KAAK,MAAM;KAAG;IAC7B,MAAM,EAAE,KAAK,EAAE,GAAG;QAAE,OAAO,KAAK,MAAM;IAAG;IACzC,MAAM,CAAC,OAAO,GAAG;IACjB,MAAM,QAAW;IAEjB,qBACC,WAAC;sBACA,WAAC;;;YAAO,WAAQ;WAEb;sBACH,WAAC;YAMA,MAAM;YACN,OAAO;YACP,OAAO;YACP,OAAO;;YARP,KAAK;;;YACL,MAAM;;;YACN,MAAM;;;YACN,MAAM;;;YACN,MAAM;;;;;AAQV\"}") /* { "origin": "test.tsx", diff --git a/packages/qwik/src/optimizer/core/src/test.rs b/packages/qwik/src/optimizer/core/src/test.rs index 8c60bb9e0d2..c69ffeef4b4 100644 --- a/packages/qwik/src/optimizer/core/src/test.rs +++ b/packages/qwik/src/optimizer/core/src/test.rs @@ -6220,6 +6220,26 @@ fn should_work() { }); } +#[test] +fn moves_captures_when_possible() { + test_input!(TestInput { + code: r#" + import { component$, useSignal, $ } from "@qwik.dev/core"; + + export const Test = component$(() => { + const sig = useSignal(0); + const foo = useSignal('foo'); + const bar = useSignal('bar'); + return ; + }); + "# + .to_string(), + transpile_ts: true, + transpile_jsx: true, + ..TestInput::default() + }); +} + impl TestInput { pub fn default() -> Self { Self { diff --git a/packages/qwik/src/optimizer/core/src/transform.rs b/packages/qwik/src/optimizer/core/src/transform.rs index 34dd44fff40..80d5ee35e2b 100644 --- a/packages/qwik/src/optimizer/core/src/transform.rs +++ b/packages/qwik/src/optimizer/core/src/transform.rs @@ -1015,6 +1015,30 @@ impl<'a> QwikTransform<'a> { } } + /// Pre-compute captures for an event handler expression without folding it. + /// Returns the set of captured identifiers (variables from enclosing scope). + fn compute_handler_captures(&self, handler: &ast::Expr) -> Vec { + let descendent_idents = { + let mut collector = IdentCollector::new(); + handler.visit_with(&mut collector); + collector.get_words() + }; + + let (decl_collect, _): (Vec<_>, Vec<_>) = self + .decl_stack + .iter() + .flat_map(|v| v.iter()) + .cloned() + .partition(|(_, t)| matches!(t, IdentType::Var(_))); + + let (mut scoped, _) = compute_scoped_idents(&descendent_idents, &decl_collect); + + let params = get_function_params(handler); + scoped.retain(|id| !params.contains(id)); + + scoped + } + /// Chooses which hoisting scope (0 = root component, 1 = first callback or nested component, …) /// should receive a QRL's const declaration. Uses the segment just pushed in create_segment (segments.last()). /// @@ -1798,7 +1822,7 @@ impl<'a> QwikTransform<'a> { let should_runtime_sort = has_spread_props || has_component_bind_props; let mut static_listeners = !has_spread_props; let mut static_subtree = !has_spread_props; - let mut added_iter_var_prop = false; // Track if we've already added q:p or q:ps + let mut moved_captures = false; // Track if we've already added q:p or q:ps // Collect parameters to lift via q:p/q:ps: // Priority 1: iteration variables (loop context) - collected from iteration_var_stack @@ -1840,8 +1864,8 @@ impl<'a> QwikTransform<'a> { Vec::new() } } else { - // No loop context - collect extra params from inline event handlers (params beyond event, element) - let mut collected_params: Vec = Vec::new(); + // No loop context - collect union of captures from all event handlers + let mut all_captures: Vec = Vec::new(); for prop in props.iter() { if let ast::PropOrSpread::Prop(box ast::Prop::KeyValue(ref node)) = prop { @@ -1850,42 +1874,23 @@ impl<'a> QwikTransform<'a> { ast::PropName::Str(ref s) => Some(s.value.clone()), _ => None, }; - if key.as_ref().and_then(convert_qrl_word).is_some() { - match &*node.value { - ast::Expr::Arrow(ref arrow) if arrow.params.len() > 2 => { - // Extract params beyond index 2 (event, element) - for param in &arrow.params[2..] { - if let ast::Pat::Ident(ref ident) = param { - if !collected_params.iter().any(|p| { - p.sym == ident.id.sym - && p.ctxt == ident.id.ctxt - }) { - collected_params.push(ident.id.clone()); - } - } - } - } - ast::Expr::Fn(ref fn_expr) - if fn_expr.function.params.len() > 2 => - { - // Extract params beyond index 2 - for param in &fn_expr.function.params[2..] { - if let ast::Pat::Ident(ref ident) = param.pat { - if !collected_params.iter().any(|p| { - p.sym == ident.id.sym - && p.ctxt == ident.id.ctxt - }) { - collected_params.push(ident.id.clone()); - } - } - } + if key.as_ref().and_then(convert_qrl_word).is_some() + && matches!(*node.value, ast::Expr::Arrow(_) | ast::Expr::Fn(_)) + { + let captures = self.compute_handler_captures(&node.value); + for cap in captures { + if !all_captures.contains(&cap) { + all_captures.push(cap); } - _ => {} } } } } - collected_params + all_captures.sort(); + all_captures + .iter() + .map(|id| ast::Ident::new(id.0.clone(), DUMMY_SP, id.1)) + .collect() } } else { Vec::new() @@ -2001,43 +2006,21 @@ impl<'a> QwikTransform<'a> { { if matches!(*node.value, ast::Expr::Arrow(_) | ast::Expr::Fn(_)) { - // Determine which params to lift: - // 1. For loop context: use iteration variables (existing behavior) - // 2. For non-loop context: use explicit handler params (generalization) + // Use element_lifted_params for both loop iteration vars + // and non-loop captures (computed in pre-pass above) let params_to_lift: Vec = - if !self.iteration_var_stack.is_empty() - && !element_lifted_params.is_empty() - { - // Loop-based: use iteration vars as params + if !element_lifted_params.is_empty() && !is_fn { element_lifted_params.clone() - } else if !is_fn { - // Non-loop inline handler on string component: extract explicit params - if let Some((handler_idents, _handler_names)) = - extract_inline_handler_params(&node.value) - { - get_liftable_inline_handler_params( - &handler_idents, - &_handler_names, - ) - } else { - Vec::new() - } } else { Vec::new() }; - // Transform handler if we have params to lift + // Inject lifted params as extra function params let transformed_value = if !params_to_lift.is_empty() { - if !self.iteration_var_stack.is_empty() { - // Loop context: inject iteration vars as params - transform_event_handler_with_iter_var( - *node.value.clone(), - ¶ms_to_lift, - ) - } else { - // Non-loop context: params already declared, just use as-is - *node.value.clone() - } + transform_event_handler_with_iter_var( + *node.value.clone(), + ¶ms_to_lift, + ) } else { *node.value.clone() }; @@ -2078,9 +2061,7 @@ impl<'a> QwikTransform<'a> { // Add q:p (single) or q:ps (multiple) prop for lifted params // Apply to both loop-based iteration vars AND non-loop inline handler params - if !params_to_lift.is_empty() - && !is_fn && !added_iter_var_prop - { + if !params_to_lift.is_empty() && !is_fn && !moved_captures { let (prop_name, row_value): (&str, Box) = if params_to_lift.len() == 1 { // Single parameter: use q:p without array @@ -2123,7 +2104,7 @@ impl<'a> QwikTransform<'a> { value: row_value, }), ))); - added_iter_var_prop = true; + moved_captures = true; } } else { let const_prop = is_const_expr( @@ -2268,6 +2249,9 @@ impl<'a> QwikTransform<'a> { if static_subtree { flags |= 1 << 1; } + if moved_captures { + flags |= 1 << 2; + } if !should_runtime_sort { var_props.sort_by(|a: &ast::PropOrSpread, b: &ast::PropOrSpread| { match (a, b) { @@ -4332,55 +4316,6 @@ fn build_event_handler_param_pats( new_params } -/// Extract parameter identifiers from an inline handler expression (arrow or function) -/// Returns: (handler_params, all_param_names) -/// where handler_params are the actual Ident patterns, and all_param_names are their symbol names -fn extract_inline_handler_params(expr: &ast::Expr) -> Option<(Vec, Vec)> { - match expr { - ast::Expr::Arrow(arrow) => { - let mut idents = Vec::new(); - let mut names = Vec::new(); - for param in &arrow.params { - if let ast::Pat::Ident(binding) = param { - names.push(binding.id.sym.clone()); - idents.push(binding.id.clone()); - } - } - Some((idents, names)) - } - ast::Expr::Fn(fn_expr) => { - let mut idents = Vec::new(); - let mut names = Vec::new(); - for param in &fn_expr.function.params { - if let ast::Pat::Ident(binding) = ¶m.pat { - names.push(binding.id.sym.clone()); - idents.push(binding.id.clone()); - } - } - Some((idents, names)) - } - _ => None, - } -} - -/// Determine which inline handler parameters should be lifted to q:p/q:ps. -/// For inline handlers outside loops, we can lift parameters that have meaningful names -/// (not just `event` or `el`/`element` which are reserved for event and element refs). -/// Returns the identifiers that should be lifted (params at indices 2+, with meaningful names). -fn get_liftable_inline_handler_params( - handler_idents: &[ast::Ident], - _handler_names: &[Atom], -) -> Vec { - if handler_idents.len() <= 2 { - // Only event and element (or fewer), nothing to lift - return Vec::new(); - } - - // Slots 0-1 are reserved for event and element; skip those - // Slots 2+ are "extra" params that describe what the handler needs - handler_idents[2..].to_vec() -} - /// Transform event handler to add iteration variables as parameters. /// Takes the element's full list of iteration vars (in loop order) so param order matches q:ps. /// For each var: if the handler uses it, add that ident; otherwise add a placeholder (_2, _3, ...). @@ -4679,177 +4614,4 @@ mod param_lifting_tests { type_ann: None, }) } - - /// Helper to create an empty arrow function body - fn make_empty_arrow_body() -> ast::BlockStmtOrExpr { - ast::BlockStmtOrExpr::Expr(Box::new(ast::Expr::Lit(ast::Lit::Num(ast::Number { - span: DUMMY_SP, - value: 0.0, - raw: None, - })))) - } - - #[test] - fn test_extract_inline_handler_params_arrow_zero_params() { - // Arrow with no parameters: () => value - let arrow = ast::Expr::Arrow(ast::ArrowExpr { - params: vec![], - body: Box::new(make_empty_arrow_body()), - is_async: false, - is_generator: false, - type_params: None, - return_type: None, - span: DUMMY_SP, - ctxt: Default::default(), - }); - - let result = extract_inline_handler_params(&arrow); - assert!(result.is_some()); - let (idents, names) = result.unwrap(); - assert_eq!(idents.len(), 0); - assert_eq!(names.len(), 0); - } - - #[test] - fn test_extract_inline_handler_params_arrow_with_params() { - // Arrow with parameters: (e, el, item, index) => value - let arrow = ast::Expr::Arrow(ast::ArrowExpr { - params: vec![ - make_param_ident("e"), - make_param_ident("el"), - make_param_ident("item"), - make_param_ident("index"), - ], - body: Box::new(make_empty_arrow_body()), - is_async: false, - is_generator: false, - type_params: None, - return_type: None, - span: DUMMY_SP, - ctxt: Default::default(), - }); - - let result = extract_inline_handler_params(&arrow); - assert!(result.is_some()); - let (idents, names) = result.unwrap(); - assert_eq!(idents.len(), 4); - assert_eq!(names.len(), 4); - assert_eq!(names[0], atom!("e")); - assert_eq!(names[1], atom!("el")); - assert_eq!(names[2], atom!("item")); - assert_eq!(names[3], atom!("index")); - } - - #[test] - fn test_get_liftable_inline_handler_params_none() { - // Only event and element (slots 0-1): nothing to lift - let idents = vec![ - ast::Ident::new(atom!("e"), DUMMY_SP, Default::default()), - ast::Ident::new(atom!("el"), DUMMY_SP, Default::default()), - ]; - let names = vec![atom!("e"), atom!("el")]; - - let result = get_liftable_inline_handler_params(&idents, &names); - assert_eq!(result.len(), 0); - } - - #[test] - fn test_get_liftable_inline_handler_params_single() { - // Event, element, and one extra param (item) - let idents = vec![ - ast::Ident::new(atom!("e"), DUMMY_SP, Default::default()), - ast::Ident::new(atom!("el"), DUMMY_SP, Default::default()), - ast::Ident::new(atom!("item"), DUMMY_SP, Default::default()), - ]; - let names = vec![atom!("e"), atom!("el"), atom!("item")]; - - let result = get_liftable_inline_handler_params(&idents, &names); - assert_eq!(result.len(), 1); - assert_eq!(result[0].sym, atom!("item")); - } - - #[test] - fn test_get_liftable_inline_handler_params_multiple() { - // Event, element, and multiple extra params (item, index, extra) - let idents = vec![ - ast::Ident::new(atom!("e"), DUMMY_SP, Default::default()), - ast::Ident::new(atom!("el"), DUMMY_SP, Default::default()), - ast::Ident::new(atom!("item"), DUMMY_SP, Default::default()), - ast::Ident::new(atom!("index"), DUMMY_SP, Default::default()), - ast::Ident::new(atom!("extra"), DUMMY_SP, Default::default()), - ]; - let names = vec![ - atom!("e"), - atom!("el"), - atom!("item"), - atom!("index"), - atom!("extra"), - ]; - - let result = get_liftable_inline_handler_params(&idents, &names); - assert_eq!(result.len(), 3); - assert_eq!(result[0].sym, atom!("item")); - assert_eq!(result[1].sym, atom!("index")); - assert_eq!(result[2].sym, atom!("extra")); - } - - #[test] - fn test_extract_inline_handler_params_function_expr() { - // Function expression: function(e, el, item) { ... } - let fn_expr = ast::Expr::Fn(ast::FnExpr { - ident: None, - function: Box::new(ast::Function { - params: vec![ - ast::Param { - span: DUMMY_SP, - decorators: vec![], - pat: make_param_ident("e"), - }, - ast::Param { - span: DUMMY_SP, - decorators: vec![], - pat: make_param_ident("el"), - }, - ast::Param { - span: DUMMY_SP, - decorators: vec![], - pat: make_param_ident("item"), - }, - ], - decorators: vec![], - span: DUMMY_SP, - body: Some(ast::BlockStmt { - span: DUMMY_SP, - stmts: vec![], - ctxt: Default::default(), - }), - is_generator: false, - is_async: false, - type_params: None, - return_type: None, - ctxt: Default::default(), - }), - }); - - let result = extract_inline_handler_params(&fn_expr); - assert!(result.is_some()); - let (idents, names) = result.unwrap(); - assert_eq!(idents.len(), 3); - assert_eq!(names[0], atom!("e")); - assert_eq!(names[1], atom!("el")); - assert_eq!(names[2], atom!("item")); - } - - #[test] - fn test_extract_inline_handler_params_non_function() { - // Non-function expression: should return None - let literal = ast::Expr::Lit(ast::Lit::Num(ast::Number { - span: DUMMY_SP, - value: 42.0, - raw: None, - })); - - let result = extract_inline_handler_params(&literal); - assert!(result.is_none()); - } } diff --git a/packages/qwik/src/server/ssr-container.ts b/packages/qwik/src/server/ssr-container.ts index 900b0eff930..11b453c798c 100644 --- a/packages/qwik/src/server/ssr-container.ts +++ b/packages/qwik/src/server/ssr-container.ts @@ -408,7 +408,8 @@ class SSRContainer extends _SharedContainer implements ISSRContainer { varAttrs: Props | null, constAttrs: Props | null = null, styleScopedId: string | null = null, - currentFile: string | null = null + currentFile: string | null = null, + hasMovedCaptures: boolean = true ): string | undefined { const isQwikStyle = isQwikStyleElement(elementName, varAttrs) || isQwikStyleElement(elementName, constAttrs); @@ -446,7 +447,14 @@ class SSRContainer extends _SharedContainer implements ISSRContainer { // create here for writeAttrs method to use it const lastNode = this.getOrCreateLastNode(); if (varAttrs) { - innerHTML = this.writeAttrs(elementName, varAttrs, false, styleScopedId, currentFile); + innerHTML = this.writeAttrs( + elementName, + varAttrs, + false, + styleScopedId, + currentFile, + hasMovedCaptures + ); } this.write(' ' + Q_PROPS_SEPARATOR); if (key !== null) { @@ -457,7 +465,14 @@ class SSRContainer extends _SharedContainer implements ISSRContainer { } if (constAttrs && !isObjectEmpty(constAttrs)) { innerHTML = - this.writeAttrs(elementName, constAttrs, true, styleScopedId, currentFile) || innerHTML; + this.writeAttrs( + elementName, + constAttrs, + true, + styleScopedId, + currentFile, + hasMovedCaptures + ) || innerHTML; } this.write(GT); @@ -1185,10 +1200,10 @@ class SSRContainer extends _SharedContainer implements ISSRContainer { attrs: Props, isConst: boolean, styleScopedId: string | null, - currentFile: string | null + currentFile: string | null, + hasMovedCaptures: boolean ): string | undefined { let innerHTML: string | undefined = undefined; - let isLoopElement = null; for (let key in attrs) { let value = attrs[key]; if (isSSRUnsafeAttr(key)) { @@ -1199,11 +1214,7 @@ class SSRContainer extends _SharedContainer implements ISSRContainer { } if (isHtmlAttributeAnEventName(key)) { - if (isLoopElement === null) { - // check this only once for the entire element - isLoopElement = attributesContainsIterationProp(attrs); - } - value = _setEvent(this.serializationCtx, key, value, isLoopElement); + value = _setEvent(this.serializationCtx, key, value, hasMovedCaptures); } else if (key === 'ref') { const lastNode = this.getOrCreateLastNode(); if (isSignal(value)) { @@ -1302,13 +1313,6 @@ const isQwikStyleElement = (tag: string, attrs: Props | null) => { return false; }; -const attributesContainsIterationProp = (attrs: Props): boolean => { - return ( - Object.prototype.hasOwnProperty.call(attrs, ITERATION_ITEM_SINGLE) || - Object.prototype.hasOwnProperty.call(attrs, ITERATION_ITEM_MULTI) - ); -}; - function newTagError(text: string) { return qError(QError.tagError, [text]); } From 856b1265a0b33cf9db5a82178d9d3658312b9f96 Mon Sep 17 00:00:00 2001 From: Wout Mertens Date: Wed, 4 Mar 2026 22:54:27 +0100 Subject: [PATCH 09/11] feat(optimizer): empty qrl => noopQrl --- .changeset/eighty-pandas-write.md | 5 + packages/qwik/src/optimizer/core/src/parse.rs | 361 ++++++++++++++++-- ..._component_level_self_referential_qrl.snap | 2 +- ...e__test__destructure_args_colon_props.snap | 2 +- ...__test__destructure_args_colon_props2.snap | 2 +- ...__test__destructure_args_colon_props3.snap | 2 +- ...estructure_args_inline_cmp_block_stmt.snap | 2 +- ...structure_args_inline_cmp_block_stmt2.snap | 2 +- ...destructure_args_inline_cmp_expr_stmt.snap | 2 +- ...qwik_core__test__example_build_server.snap | 2 +- .../qwik_core__test__example_class_name.snap | 2 +- ...nent_with_event_listeners_inside_loop.snap | 2 +- ...est__example_derived_signals_children.snap | 2 +- ...re__test__example_derived_signals_cmp.snap | 2 +- ...ple_derived_signals_complext_children.snap | 2 +- ...re__test__example_derived_signals_div.snap | 2 +- ...ple_derived_signals_multiple_children.snap | 2 +- .../qwik_core__test__example_dev_mode.snap | 2 +- ..._core__test__example_dev_mode_inlined.snap | 2 +- ...qwik_core__test__example_export_issue.snap | 2 +- ...core__test__example_getter_generation.snap | 2 +- ...ore__test__example_immutable_analysis.snap | 2 +- ...example_immutable_function_components.snap | 2 +- ..._core__test__example_import_assertion.snap | 2 +- .../qwik_core__test__example_input_bind.snap | 2 +- .../qwik_core__test__example_issue_33443.snap | 2 +- .../qwik_core__test__example_issue_4438.snap | 2 +- .../qwik_core__test__example_jsx_keyed.snap | 2 +- ...wik_core__test__example_jsx_keyed_dev.snap | 2 +- ..._core__test__example_mutable_children.snap | 2 +- ...wik_core__test__example_noop_dev_mode.snap | 2 +- ...ore__test__example_of_synchronous_qrl.snap | 2 +- ...__test__example_post_dce_noop_segment.snap | 128 +++++++ ...ore__test__example_preserve_filenames.snap | 2 +- ...__example_preserve_filenames_segments.snap | 2 +- .../qwik_core__test__example_qwik_react.snap | 2 +- ...core__test__example_qwik_react_inline.snap | 2 +- ...ore__test__example_qwik_router_client.snap | 2 +- ...__test__example_reg_ctx_name_segments.snap | 19 +- ...t__example_segment_variable_migration.snap | 2 +- ..._self_referential_component_migration.snap | 2 +- .../qwik_core__test__example_spread_jsx.snap | 2 +- ...core__test__example_strip_client_code.snap | 6 +- ...core__test__example_strip_server_code.snap | 34 +- ...ore__test__example_transpile_jsx_only.snap | 2 +- ...core__test__example_transpile_ts_only.snap | 2 +- .../qwik_core__test__example_ts_enums.snap | 2 +- ...re__test__example_ts_enums_issue_1341.snap | 2 +- ...__test__example_ts_enums_no_transpile.snap | 2 +- ...core__test__hoisted_fn_signal_in_loop.snap | 2 +- .../qwik_core__test__impure_template_fns.snap | 2 +- ...ifier_reference_when_hoisted_snapshot.snap | 2 +- .../snapshots/qwik_core__test__issue_150.snap | 2 +- .../snapshots/qwik_core__test__issue_476.snap | 2 +- .../qwik_core__test__issue_5008.snap | 2 +- .../qwik_core__test__issue_7216_add_test.snap | 2 +- .../snapshots/qwik_core__test__issue_964.snap | 2 +- .../qwik_core__test__lib_mode_fn_signal.snap | 2 +- ...e__test__moves_captures_when_possible.snap | 2 +- .../qwik_core__test__noop_empty_body.snap | 64 ++++ .../qwik_core__test__relative_paths.snap | 2 +- .../qwik_core__test__rename_builder_io.snap | 2 +- ...test__root_level_self_referential_qrl.snap | 2 +- ...oot_level_self_referential_qrl_inline.snap | 2 +- ...core__test__should_convert_jsx_events.snap | 200 +--------- ...core__test__should_convert_rest_props.snap | 2 +- ...k_core__test__should_destructure_args.snap | 2 +- ...act_multiple_qrls_with_item_and_index.snap | 2 +- ...s_with_item_and_index_and_capture_ref.snap | 2 +- ...core__test__should_extract_single_qrl.snap | 2 +- ...re__test__should_extract_single_qrl_2.snap | 2 +- ..._should_extract_single_qrl_with_index.snap | 2 +- ...act_single_qrl_with_nested_components.snap | 2 +- ...uld_handle_dangerously_set_inner_html.snap | 2 +- ..._test__should_ignore_null_inlined_qrl.snap | 2 +- ...ld_make_component_jsx_split_with_bind.snap | 2 +- ...mark_props_as_var_props_for_inner_cmp.snap | 2 +- ...ld_merge_attributes_with_spread_props.snap | 2 +- ...es_with_spread_props_before_and_after.snap | 2 +- ...hould_merge_bind_checked_and_on_input.snap | 2 +- ..._should_merge_bind_value_and_on_input.snap | 2 +- ...hould_merge_on_input_and_bind_checked.snap | 2 +- ..._should_merge_on_input_and_bind_value.snap | 2 +- ...__should_move_bind_value_to_var_props.snap | 2 +- ...d_to_iteration_variables_to_var_props.snap | 2 +- ...enerate_conflicting_props_identifiers.snap | 2 +- ...st__should_not_move_over_side_effects.snap | 2 +- ...nd_checked_in_var_props_for_jsx_split.snap | 2 +- ...bind_value_in_var_props_for_jsx_split.snap | 2 +- ..._not_transform_events_on_non_elements.snap | 60 +-- .../qwik_core__test__should_not_wrap_fn.snap | 2 +- ...rap_ternary_function_operator_with_fn.snap | 2 +- ...__should_not_wrap_var_template_string.snap | 2 +- ...core__test__should_split_spread_props.snap | 2 +- ...lit_spread_props_with_additional_prop.snap | 2 +- ...it_spread_props_with_additional_prop2.snap | 2 +- ...it_spread_props_with_additional_prop3.snap | 2 +- ...it_spread_props_with_additional_prop4.snap | 2 +- ...it_spread_props_with_additional_prop5.snap | 2 +- ...oped_variables_and_item_index_in_loop.snap | 2 +- ...nsform_block_scoped_variables_in_loop.snap | 2 +- ...nsform_component_with_normal_function.snap | 2 +- ...orm_event_names_without_jsx_transpile.snap | 88 +---- ...ould_transform_handler_in_for_of_loop.snap | 2 +- ...capturing_cross_scope_in_nested_loops.snap | 2 +- ...tiple_handler_with_different_captures.snap | 2 +- ...oped_variables_and_item_index_in_loop.snap | 2 +- ...ltiple_block_scoped_variables_in_loop.snap | 2 +- ...uld_transform_multiple_event_handlers.snap | 2 +- ...ansform_multiple_event_handlers_case2.snap | 2 +- ...__test__should_transform_nested_loops.snap | 2 +- ...ops_handler_captures_only_inner_scope.snap | 2 +- ..._transform_qrls_in_ternary_expression.snap | 2 +- ...one_handler_with_captures_one_without.snap | 2 +- ...ted_loops_handler_captures_outer_only.snap | 2 +- ...pturing_different_block_scope_in_loop.snap | 2 +- .../qwik_core__test__should_work.snap | 99 ----- ...ould_wrap_inner_inline_component_prop.snap | 2 +- ...d_wrap_logical_expression_in_template.snap | 2 +- ...st__should_wrap_object_with_fn_signal.snap | 2 +- ...uld_wrap_prop_from_destructured_array.snap | 2 +- ...e__test__should_wrap_store_expression.snap | 2 +- ...p_type_asserted_variables_in_template.snap | 2 +- .../qwik_core__test__special_jsx.snap | 2 +- ...wik_core__test__support_windows_paths.snap | 2 +- .../qwik_core__test__ternary_prop.snap | 2 +- ...__test__transform_qrl_in_regular_prop.snap | 2 +- packages/qwik/src/optimizer/core/src/test.rs | 75 +++- 128 files changed, 745 insertions(+), 626 deletions(-) create mode 100644 .changeset/eighty-pandas-write.md create mode 100644 packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_post_dce_noop_segment.snap create mode 100644 packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__noop_empty_body.snap delete mode 100644 packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_work.snap diff --git a/.changeset/eighty-pandas-write.md b/.changeset/eighty-pandas-write.md new file mode 100644 index 00000000000..9ec682ec1d8 --- /dev/null +++ b/.changeset/eighty-pandas-write.md @@ -0,0 +1,5 @@ +--- +'@qwik.dev/core': minor +--- + +FEAT: the optimizer can now detect empty QRL segments and replace them with a more efficient noopQrl. This means that for example, you can put code meant only for the server inside `if (isServer)` blocks and they will not cause an empty QRL to be downloaded. `event$()` is therefore no longer needed. diff --git a/packages/qwik/src/optimizer/core/src/parse.rs b/packages/qwik/src/optimizer/core/src/parse.rs index 710d62b9797..ebed72c3255 100644 --- a/packages/qwik/src/optimizer/core/src/parse.rs +++ b/packages/qwik/src/optimizer/core/src/parse.rs @@ -22,7 +22,7 @@ use crate::transform::{ create_synthetic_named_export, QwikTransform, QwikTransformOptions, Segment, SegmentKind, }; use crate::utils::{Diagnostic, DiagnosticCategory, DiagnosticScope, SourceLocation}; -use crate::words::{_INLINED_QRL_DEV, _NOOP_QRL_DEV, _QRL_DEV}; +use crate::words::{_INLINED_QRL_DEV, _NOOP_QRL, _NOOP_QRL_DEV, _QRL, _QRL_DEV}; use crate::EntryStrategy; use indexmap::IndexMap; use path_slash::PathExt; @@ -432,10 +432,24 @@ pub fn transform_code(config: TransformCodeOptions) -> Result = Vec::with_capacity(segments.len() + 10); let comments_maps = comments.clone().take_all(); - // Now process each segment - // TODO handle noop segments, don't generate code for them + // Process segments in two phases: + // Phase 1: Build all segment modules, run DCE, detect empty ones + // Phase 2: Replace empty segment QRL refs with noopQrl, emit non-empty + let mut empty_segment_names = std::collections::HashSet::::new(); if !segments.is_empty() { let q = qt.as_ref().unwrap(); + let is_dev = config.mode == EmitMode::Dev; + + // Phase 1: Build and detect empty segments + struct BuiltSegment { + segment: Segment, + module: ast::Module, + comments: SingleThreadedComments, + is_entry: bool, + segment_path: String, + } + let mut built_segments: Vec = Vec::new(); + for h in segments.into_iter() { let is_entry = h.entry.is_none(); let path_str = h.data.path.to_string(); @@ -450,45 +464,52 @@ pub fn transform_code(config: TransformCodeOptions) -> Result Result Result { add_section_separators(modu, &comments); @@ -1559,8 +1673,7 @@ fn remove_unused_qrl_declarations(module: &mut ast::Module) { }; item.visit_with(&mut collector); for r in collector.refs { - if !used.contains(&r) { - used.insert(r); + if used.insert(r) { changed = true; } } @@ -1609,6 +1722,184 @@ fn remove_unused_qrl_declarations(module: &mut ast::Module) { } } +/// Check if a segment module's exported function body is empty (e.g., `export const s_xxx = () => {}`) +fn is_empty_segment_body(module: &ast::Module) -> bool { + for item in &module.body { + if let ast::ModuleItem::ModuleDecl(ast::ModuleDecl::ExportDecl(export)) = item { + if let ast::Decl::Var(var) = &export.decl { + if let Some(decl) = var.decls.first() { + if let Some(init) = &decl.init { + return is_empty_fn_expr(init); + } + } + } + } + } + false +} + +fn is_empty_fn_expr(expr: &ast::Expr) -> bool { + match expr { + ast::Expr::Arrow(arrow) => match &*arrow.body { + ast::BlockStmtOrExpr::BlockStmt(block) => { + block.stmts.iter().all(is_captures_access_stmt) + } + // `() => undefined` or `() => void 0` + ast::BlockStmtOrExpr::Expr(expr) => is_noop_expr(expr), + }, + ast::Expr::Fn(fn_expr) => match &fn_expr.function.body { + Some(body) => body.stmts.iter().all(is_captures_access_stmt), + None => false, + }, + _ => false, + } +} + +/// Check if an expression is a no-op value (undefined, void 0) +fn is_noop_expr(expr: &ast::Expr) -> bool { + match expr { + ast::Expr::Ident(ident) => ident.sym.as_ref() == "undefined", + ast::Expr::Unary(unary) => { + unary.op == ast::UnaryOp::Void + && matches!(&*unary.arg, ast::Expr::Lit(ast::Lit::Num(n)) if n.value == 0.0) + } + _ => false, + } +} + +/// Check if a statement is just `_captures[N];` (a no-op capture access left by DCE) +fn is_captures_access_stmt(stmt: &ast::Stmt) -> bool { + if let ast::Stmt::Expr(expr_stmt) = stmt { + if let ast::Expr::Member(member) = &*expr_stmt.expr { + if let ast::Expr::Ident(ident) = &*member.obj { + return ident.sym.as_ref() == "_captures"; + } + } + } + false +} + +/// Add `_noopQrl` (or `_noopQrlDEV`) import to a module if not already imported. +/// DCE will remove it if unused. +fn add_noop_qrl_import(module: &mut ast::Module, is_dev: bool, core_module: &Atom) { + let noop_sym = if is_dev { + (*_NOOP_QRL_DEV).clone() + } else { + (*_NOOP_QRL).clone() + }; + + // Check if _noopQrl is already imported + let has_import = module.body.iter().any(|item| { + if let ast::ModuleItem::ModuleDecl(ast::ModuleDecl::Import(import_decl)) = item { + import_decl.specifiers.iter().any(|spec| { + if let ast::ImportSpecifier::Named(n) = spec { + n.local.sym == noop_sym + } else { + false + } + }) + } else { + false + } + }); + + if has_import { + return; + } + + module.body.insert( + 0, + ast::ModuleItem::ModuleDecl(ast::ModuleDecl::Import(ast::ImportDecl { + span: DUMMY_SP, + specifiers: vec![ast::ImportSpecifier::Named(ast::ImportNamedSpecifier { + span: DUMMY_SP, + local: ast::Ident::new(noop_sym, DUMMY_SP, Default::default()), + imported: None, + is_type_only: false, + })], + src: Box::new(ast::Str { + span: DUMMY_SP, + value: core_module.clone(), + raw: None, + }), + type_only: false, + with: None, + phase: Default::default(), + })), + ); +} + +/// Replace `qrl()`/`qrlDEV()` calls referencing empty segments with `_noopQrl()`/`_noopQrlDEV()`. +/// The first arg (import function) is dropped; the rest (symbol name, dev obj, captures) remain. +/// Returns `true` if any replacements were made. +fn replace_noop_qrl_calls( + module: &mut ast::Module, + empty_names: &std::collections::HashSet, + is_dev: bool, +) -> bool { + use swc_ecmascript::visit::VisitMutWith; + + struct ReplaceNoopQrlVisitor<'a> { + empty_names: &'a std::collections::HashSet, + is_dev: bool, + did_replace: bool, + } + + impl swc_ecmascript::visit::VisitMut for ReplaceNoopQrlVisitor<'_> { + fn visit_mut_call_expr(&mut self, call: &mut ast::CallExpr) { + call.visit_mut_children_with(self); + + let is_qrl = if let ast::Callee::Expr(callee) = &call.callee { + if let ast::Expr::Ident(ident) = &**callee { + ident.sym == *_QRL || ident.sym == *_QRL_DEV + } else { + false + } + } else { + false + }; + + if !is_qrl || call.args.len() < 2 { + return; + } + + // Check if symbol name (arg[1]) is in empty set + let symbol_name = if let ast::Expr::Lit(ast::Lit::Str(s)) = &*call.args[1].expr { + s.value.clone() + } else { + return; + }; + + if !self.empty_names.contains(&symbol_name) { + return; + } + + // Drop first arg (import function), change callee + call.args.remove(0); + let new_callee = if self.is_dev { + &*_NOOP_QRL_DEV + } else { + &*_NOOP_QRL + }; + if let ast::Callee::Expr(callee) = &mut call.callee { + if let ast::Expr::Ident(ident) = &mut **callee { + ident.sym = new_callee.clone(); + ident.ctxt = swc_common::SyntaxContext::empty(); + } + } + self.did_replace = true; + } + } + + let mut visitor = ReplaceNoopQrlVisitor { + empty_names, + is_dev, + did_replace: false, + }; + module.visit_mut_with(&mut visitor); + visitor.did_replace +} + #[cfg(test)] mod migration_cleanup_tests { use super::*; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__component_level_self_referential_qrl.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__component_level_self_referential_qrl.snap index 1093c52de2e..1deab80b4ed 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__component_level_self_referential_qrl.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__component_level_self_referential_qrl.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5854 +assertion_line: 5893 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props.snap index a5d5df1b3d6..30d84836be2 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3714 +assertion_line: 3753 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props2.snap index 134a077fc54..bef88185abe 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props2.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3735 +assertion_line: 3774 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props3.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props3.snap index 0834f5ea875..31d650d04d9 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props3.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_colon_props3.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3757 +assertion_line: 3796 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt.snap index 34a0c9b2a96..ced440e122b 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3650 +assertion_line: 3689 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt2.snap index ead5f8c9189..2ad7fcb3891 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_block_stmt2.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3672 +assertion_line: 3711 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_expr_stmt.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_expr_stmt.snap index c9ba1872b47..1ccec033ca1 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_expr_stmt.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__destructure_args_inline_cmp_expr_stmt.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3695 +assertion_line: 3734 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_build_server.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_build_server.snap index f8ec04a9d30..65cdab2b1aa 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_build_server.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_build_server.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2732 +assertion_line: 2733 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_class_name.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_class_name.snap index 53f6bae9528..e82320516a1 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_class_name.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_class_name.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2649 +assertion_line: 2650 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_component_with_event_listeners_inside_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_component_with_event_listeners_inside_loop.snap index 4fe6ac73ab9..353f63a7724 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_component_with_event_listeners_inside_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_component_with_event_listeners_inside_loop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3978 +assertion_line: 4017 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_children.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_children.snap index 3c05454e9e4..817a568d239 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_children.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_children.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2863 +assertion_line: 2902 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_cmp.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_cmp.snap index aa39ab28b34..e50665a56b1 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_cmp.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_cmp.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2996 +assertion_line: 3035 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_complext_children.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_complext_children.snap index 5468c6b003d..4449a3af2e6 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_complext_children.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_complext_children.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2964 +assertion_line: 3003 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_div.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_div.snap index a765ac67528..f76388d65ad 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_div.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_div.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2775 +assertion_line: 2814 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_multiple_children.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_multiple_children.snap index 28fc4e30297..11964791d83 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_multiple_children.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_derived_signals_multiple_children.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2918 +assertion_line: 2957 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode.snap index d89105fbc6c..b7aa32be199 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2300 +assertion_line: 2301 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode_inlined.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode_inlined.snap index d126e7cb28f..042885c9ce2 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode_inlined.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_dev_mode_inlined.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2322 +assertion_line: 2323 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_export_issue.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_export_issue.snap index 9b56856f27c..50bba0d5e27 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_export_issue.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_export_issue.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2410 +assertion_line: 2411 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_getter_generation.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_getter_generation.snap index ffe1553a7ae..cd70245e610 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_getter_generation.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_getter_generation.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3076 +assertion_line: 3115 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_analysis.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_analysis.snap index 970a05b4109..54e6003cc21 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_analysis.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_analysis.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2138 +assertion_line: 2139 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_function_components.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_function_components.snap index 26fbc0076c9..fef7e1efd61 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_function_components.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_immutable_function_components.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2604 +assertion_line: 2605 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_import_assertion.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_import_assertion.snap index e278158769c..531edaad459 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_import_assertion.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_import_assertion.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2044 +assertion_line: 2045 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_input_bind.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_input_bind.snap index c58fe2aa797..d8e1eecdd7d 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_input_bind.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_input_bind.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2013 +assertion_line: 2014 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_33443.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_33443.snap index 3e7767fc23f..99ec71ce893 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_33443.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_33443.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3049 +assertion_line: 3088 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_4438.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_4438.snap index f4d9ecc2e52..cb885c08c63 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_4438.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_issue_4438.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2839 +assertion_line: 2878 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed.snap index 8be517fcf91..d210ea255ee 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2441 +assertion_line: 2442 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed_dev.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed_dev.snap index 4a71bf4c696..aa94e6fe423 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed_dev.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_jsx_keyed_dev.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2467 +assertion_line: 2468 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_mutable_children.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_mutable_children.snap index 0392ba53a2a..381258d0469 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_mutable_children.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_mutable_children.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2496 +assertion_line: 2497 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_noop_dev_mode.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_noop_dev_mode.snap index 12b9cf5815d..57b99935dc8 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_noop_dev_mode.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_noop_dev_mode.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3813 +assertion_line: 3852 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_of_synchronous_qrl.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_of_synchronous_qrl.snap index 59b80ad2995..f5d3d3f42fb 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_of_synchronous_qrl.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_of_synchronous_qrl.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3592 +assertion_line: 3631 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_post_dce_noop_segment.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_post_dce_noop_segment.snap new file mode 100644 index 00000000000..64df9213196 --- /dev/null +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_post_dce_noop_segment.snap @@ -0,0 +1,128 @@ +--- +source: packages/qwik/src/optimizer/core/src/test.rs +assertion_line: 2776 +expression: output +--- +==INPUT== + + +import { component$, useTask$, useStore } from '@qwik.dev/core'; +import { isServer } from '@qwik.dev/core/build'; + +export const App = component$(() => { + const state = useStore({ count: 0 }); + + // This task only runs on server; on client build it becomes empty after DCE + useTask$(() => { + if (isServer) { + state.count = 42; + } + }); + + // This task has both server and client code; should NOT become noop + useTask$(() => { + if (isServer) { + state.count = 99; + } + console.log('always runs'); + }); + + return
{state.count}
; +}); + +============================= test.js == + +import { componentQrl } from "@qwik.dev/core"; +import { qrl } from "@qwik.dev/core"; +// +const _qrl_s_ckEPmXZlub0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_App_component_ckEPmXZlub0"), "s_ckEPmXZlub0"); +// +export const App = /*#__PURE__*/ componentQrl(_qrl_s_ckEPmXZlub0); + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAIA,OAAO,MAAM,oBAAM,iCAmBhB\"}") +============================= test.tsx_App_component_ckEPmXZlub0.js (ENTRY POINT)== + +import { _noopQrl } from "@qwik.dev/core"; +import { _jsxSorted } from "@qwik.dev/core"; +import { _wrapProp } from "@qwik.dev/core"; +import { qrl } from "@qwik.dev/core"; +import { useStore } from "@qwik.dev/core"; +import { useTaskQrl } from "@qwik.dev/core"; +// +const i_YeP1iz5iPN4 = ()=>import("./test.tsx_App_component_useTask_1_YeP1iz5iPN4"); +// +export const s_ckEPmXZlub0 = ()=>{ + const state = useStore({ + count: 0 + }); + // This task only runs on server; on client build it becomes empty after DCE + useTaskQrl(/*#__PURE__*/ _noopQrl("s_0u2kaPEyYJA", [ + state + ])); + // This task has both server and client code; should NOT become noop + useTaskQrl(/*#__PURE__*/ qrl(i_YeP1iz5iPN4, "s_YeP1iz5iPN4", [ + state + ])); + return /*#__PURE__*/ _jsxSorted("div", null, null, _wrapProp(state, "count"), 3, "u6_0"); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;6BAI8B;IAC7B,MAAM,QAAQ,SAAS;QAAE,OAAO;IAAE;IAElC,4EAA4E;IAC5E;;;IAMA,oEAAoE;IACpE;;;IAOA,qBAAO,WAAC,6BAAK;AACd\"}") +/* +{ + "origin": "test.tsx", + "name": "s_ckEPmXZlub0", + "entry": null, + "displayName": "test.tsx_App_component", + "hash": "ckEPmXZlub0", + "canonicalFilename": "test.tsx_App_component_ckEPmXZlub0", + "path": "", + "extension": "js", + "parent": null, + "ctxKind": "function", + "ctxName": "component$", + "captures": false, + "loc": [ + 147, + 542 + ] +} +*/ +============================= test.tsx_App_component_useTask_1_YeP1iz5iPN4.js (ENTRY POINT)== + +import { _captures } from "@qwik.dev/core"; +// +export const s_YeP1iz5iPN4 = ()=>{ + _captures[0]; + console.log('always runs'); +}; + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;6BAeU;;IAIR,QAAQ,GAAG,CAAC\"}") +/* +{ + "origin": "test.tsx", + "name": "s_YeP1iz5iPN4", + "entry": null, + "displayName": "test.tsx_App_component_useTask_1", + "hash": "YeP1iz5iPN4", + "canonicalFilename": "test.tsx_App_component_useTask_1_YeP1iz5iPN4", + "path": "", + "extension": "js", + "parent": "s_ckEPmXZlub0", + "ctxKind": "function", + "ctxName": "useTask$", + "captures": true, + "loc": [ + 420, + 503 + ], + "captureNames": [ + "state" + ] +} +*/ +== DIAGNOSTICS == + +[] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_preserve_filenames.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_preserve_filenames.snap index c7cbcf65cfe..e2bb7cee025 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_preserve_filenames.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_preserve_filenames.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2681 +assertion_line: 2682 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_preserve_filenames_segments.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_preserve_filenames_segments.snap index 19bd5512595..85450467c30 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_preserve_filenames_segments.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_preserve_filenames_segments.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2705 +assertion_line: 2706 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_react.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_react.snap index c6155581f4d..db5d86361bc 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_react.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_react.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3120 +assertion_line: 3159 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_react_inline.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_react_inline.snap index ca2177d4564..4f650caf8d0 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_react_inline.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_react_inline.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3223 +assertion_line: 3262 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_router_client.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_router_client.snap index 68de144562f..f18c81816af 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_router_client.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_qwik_router_client.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3326 +assertion_line: 3365 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments.snap index 3fc07d98fa0..b6b109f106d 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments.snap @@ -12,7 +12,7 @@ export const Works = component$((props) => { const text = 'hola'; return ( <> -
console.log('in server', text))}>
+
server$(() => console.log('in server', text))}>
foo()}>
); @@ -22,31 +22,28 @@ export const Works = component$((props) => { import "./foo"; import { componentQrl } from "@qwik.dev/core"; -import { serverQrl } from "@qwik.dev/core"; -import { _regSymbol } from "@qwik.dev/core"; import { inlinedQrl } from "@qwik.dev/core"; -import { _jsxSorted } from "@qwik.dev/core"; import { _noopQrl } from "@qwik.dev/core"; +import { _jsxSorted } from "@qwik.dev/core"; import { Fragment as _Fragment } from "@qwik.dev/core/jsx-runtime"; // -const Works_component_Fragment_div_q_e_click_server_YY85RDCwwvA = /*#__PURE__*/ _regSymbol(()=>console.log('in server', 'hola'), "YY85RDCwwvA"); -// const _qrl_qrl_4294901762 = /*#__PURE__*/ _noopQrl("Works_component_Fragment_div_q_e_click_0UiSo8yqgZw"); +const _qrl_qrl_4294901764 = /*#__PURE__*/ _noopQrl("Works_component_Fragment_div_q_e_click_1_0umAYq0xJhQ"); // const Works_component_t45qL4vNGv0 = (props)=>{ return /*#__PURE__*/ _jsxSorted(_Fragment, null, null, [ - /*#__PURE__*/ _jsxSorted("div", { - "q-e:click": serverQrl(/*#__PURE__*/ inlinedQrl(Works_component_Fragment_div_q_e_click_server_YY85RDCwwvA, "Works_component_Fragment_div_q_e_click_server_YY85RDCwwvA")) - }, null, null, 2, null), /*#__PURE__*/ _jsxSorted("div", null, { "q-e:click": _qrl_qrl_4294901762 + }, null, 3, null), + /*#__PURE__*/ _jsxSorted("div", null, { + "q-e:click": _qrl_qrl_4294901764 }, null, 3, null) - ], 1, "u6_0"); + ], 3, "u6_0"); }; export const Works = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(Works_component_t45qL4vNGv0, "Works_component_t45qL4vNGv0")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;2FAOyB,IAAM,QAAQ,GAAG,CAAC,aAH7B;;;;oCADkB,CAAC;IAEhC,qBACC;sBACA,WAAC;YAAI,aAAU;;sBACf,WAAC;YAAI,WAAQ;;;AAGf;AARA,OAAO,MAAM,sBAAQ,mGAQlB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;oCAGgC,CAAC;IAEhC,qBACC;sBACA,WAAC;YAAI,WAAQ;;sBACb,WAAC;YAAI,WAAQ;;;AAGf;AARA,OAAO,MAAM,sBAAQ,mGAQlB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_segment_variable_migration.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_segment_variable_migration.snap index a7c86426093..c57ac142b2a 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_segment_variable_migration.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_segment_variable_migration.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5770 +assertion_line: 5809 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_self_referential_component_migration.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_self_referential_component_migration.snap index 7baaf081e1d..bcc9c082e4d 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_self_referential_component_migration.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_self_referential_component_migration.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5888 +assertion_line: 5927 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_spread_jsx.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_spread_jsx.snap index 0f58a9c62f9..d71455e8d58 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_spread_jsx.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_spread_jsx.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2367 +assertion_line: 2368 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_client_code.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_client_code.snap index 9f100cd6fca..2a0505cf7cd 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_client_code.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_client_code.snap @@ -27,6 +27,7 @@ export const Parent = component$(() => { useTask$(() => { // Code + runSomething(); }); return ( @@ -63,7 +64,8 @@ const Parent_component_div_Div_render_CkMybN6xzQk = ()=>{ return state.text; }; const Parent_component_useTask_ngmvcygWux8 = ()=>{ -// Code + // Code + runSomething(); }; // const _qrl_qrl_4294901762 = /*#__PURE__*/ _noopQrl("Parent_component_div_shouldRemove_EBj69wTX1do"); @@ -96,7 +98,7 @@ const Parent_component_t6Wy3C0Q0XM = ()=>{ export const Parent = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(Parent_component_t6Wy3C0Q0XM, "Parent_component_t6Wy3C0Q0XM")); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/components/component.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;AACA,SAAsC,QAAQ,QAAkB,iBAAiB;;qDA6BnE,IAAM,QAAQ,GAAG,CAAC;oDACnB;;WAAM,MAAM,IAAI;;6CAXnB;AACR,OAAO;AACR;;;;;qCAbgC;IAChC,MAAM,QAAQ,SAAS;QACtB,MAAM;IACP;IAEA,qBAAqB;IACrB;;;IAKA;IAIA,qBACC,WAAC;;;QACA,aAAa;QACb,WAAQ;;sBAER,WAAC;YACA,QAAQ;YACR,OAAO;;;;kBAEP;;AAGJ;AA3BA,OAAO,MAAM,uBAAS,qGA2BnB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/components/component.tsx\"],\"names\":[],\"mappings\":\";;;;;;;;;;AACA,SAAsC,QAAQ,QAAkB,iBAAiB;;qDA8BnE,IAAM,QAAQ,GAAG,CAAC;oDACnB;;WAAM,MAAM,IAAI;;6CAZnB;IACR,OAAO;IACP;AACD;;;;;qCAdgC;IAChC,MAAM,QAAQ,SAAS;QACtB,MAAM;IACP;IAEA,qBAAqB;IACrB;;;IAKA;IAKA,qBACC,WAAC;;;QACA,aAAa;QACb,WAAQ;;sBAER,WAAC;YACA,QAAQ;YACR,OAAO;;;;kBAEP;;AAGJ;AA5BA,OAAO,MAAM,uBAAS,qGA4BnB\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_server_code.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_server_code.snap index 990921eecde..7455830d526 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_server_code.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_server_code.snap @@ -27,10 +27,10 @@ export const Parent = component$(() => { serverStuff$(async () => { // should be removed too const a = $(() => { - // from $(), should not be removed + dontRemoveThisDollar(); }); const b = client$(() => { - // from clien$(), should not be removed + dontRemoveThisClient(); }); return [a,b]; }) @@ -38,7 +38,7 @@ export const Parent = component$(() => { serverLoader$(handler); useTask$(() => { - // Code + runSomething(); }); return ( @@ -99,11 +99,11 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ============================= test.tsx_Parent_component_serverStuff_a_2ca3HLDC7yc.js (ENTRY POINT)== export const s_2ca3HLDC7yc = ()=>{ -// from $(), should not be removed + dontRemoveThisDollar(); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"6BAqBc;AACX,kCAAkC;AACnC\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"6BAqBc;IACX;AACD\"}") /* { "origin": "test.tsx", @@ -120,18 +120,18 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma "captures": false, "loc": [ 538, - 587 + 576 ] } */ ============================= test.tsx_Parent_component_serverStuff_b_client_v9qawr2Inkk.js (ENTRY POINT)== export const s_v9qawr2Inkk = ()=>{ -// from clien$(), should not be removed + dontRemoveThisClient(); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"6BAwBoB;AACjB,uCAAuC;AACxC\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"6BAwBoB;IACjB;AACD\"}") /* { "origin": "test.tsx", @@ -147,8 +147,8 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma "ctxName": "client$", "captures": false, "loc": [ - 610, - 664 + 599, + 637 ] } */ @@ -203,7 +203,7 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma "captures": false, "loc": [ 279, - 835 + 816 ] } */ @@ -228,19 +228,19 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma "ctxName": "onClick$", "captures": false, "loc": [ - 775, - 802 + 756, + 783 ] } */ ============================= test.tsx_Parent_component_useTask_1_P8oRQhHsurk.js (ENTRY POINT)== export const s_P8oRQhHsurk = ()=>{ -// Code + runSomething(); }; -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"6BAgCU;AACR,OAAO;AACR\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"6BAgCU;IACR;AACD\"}") /* { "origin": "test.tsx", @@ -256,8 +256,8 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma "ctxName": "useTask$", "captures": false, "loc": [ - 724, - 744 + 697, + 725 ] } */ diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_transpile_jsx_only.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_transpile_jsx_only.snap index 4a27a7c764b..7f166b008a0 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_transpile_jsx_only.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_transpile_jsx_only.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2345 +assertion_line: 2346 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_transpile_ts_only.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_transpile_ts_only.snap index d0ec16a1e15..57895377d0b 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_transpile_ts_only.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_transpile_ts_only.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2626 +assertion_line: 2627 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums.snap index 2c31933f3cf..4f6c32aa223 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2254 +assertion_line: 2255 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums_issue_1341.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums_issue_1341.snap index b4e78a9c53b..c84800cece3 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums_issue_1341.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums_issue_1341.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2199 +assertion_line: 2200 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums_no_transpile.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums_no_transpile.snap index 8f710affec1..4a9142f8087 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums_no_transpile.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_ts_enums_no_transpile.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2226 +assertion_line: 2227 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__hoisted_fn_signal_in_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__hoisted_fn_signal_in_loop.snap index ca6b48fe011..b982ab9c562 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__hoisted_fn_signal_in_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__hoisted_fn_signal_in_loop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4668 +assertion_line: 4707 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__impure_template_fns.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__impure_template_fns.snap index 469605b3514..20eb8ae5aa9 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__impure_template_fns.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__impure_template_fns.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3916 +assertion_line: 3955 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__inlined_qrl_uses_identifier_reference_when_hoisted_snapshot.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__inlined_qrl_uses_identifier_reference_when_hoisted_snapshot.snap index 640bc9d1449..e2f8d1e16e3 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__inlined_qrl_uses_identifier_reference_when_hoisted_snapshot.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__inlined_qrl_uses_identifier_reference_when_hoisted_snapshot.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 6061 +assertion_line: 6100 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_150.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_150.snap index ffdd1bfbe7b..fd66920cc64 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_150.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_150.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 1982 +assertion_line: 1983 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_476.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_476.snap index 5fe58013e6b..2354f26ba3f 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_476.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_476.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2090 +assertion_line: 2091 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_5008.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_5008.snap index b8f4154bd15..8332f53b893 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_5008.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_5008.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3564 +assertion_line: 3603 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_7216_add_test.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_7216_add_test.snap index 00fe45b1af7..9e4d77d7691 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_7216_add_test.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_7216_add_test.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4274 +assertion_line: 4313 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_964.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_964.snap index 2b654252510..10d29362ed8 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_964.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__issue_964.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2117 +assertion_line: 2118 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__lib_mode_fn_signal.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__lib_mode_fn_signal.snap index 7578b16e248..ad36a2649cc 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__lib_mode_fn_signal.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__lib_mode_fn_signal.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3852 +assertion_line: 3891 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__moves_captures_when_possible.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__moves_captures_when_possible.snap index 25b87fc3caa..3075b958634 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__moves_captures_when_possible.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__moves_captures_when_possible.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 6225 +assertion_line: 6268 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__noop_empty_body.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__noop_empty_body.snap new file mode 100644 index 00000000000..db3654631c5 --- /dev/null +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__noop_empty_body.snap @@ -0,0 +1,64 @@ +--- +source: packages/qwik/src/optimizer/core/src/test.rs +assertion_line: 6241 +expression: output +--- +==INPUT== + + + import { component$, isServer, $ } from "@qwik.dev/core"; + + export const test1 = $(() => { + if (isServer) { + // no-op + } + }); + export const test2 = $(() => { + // no-op + }); + export const test3 = $(function() { + }); + export const test4 = $(() => undefined); + export const test5 = $(() => void 0); + export const test5 = $(() => isServer ? 5 : undefined); + +============================= test.tsx == + +import { _noopQrlDEV } from "@qwik.dev/core"; +// +export const test1 = /*#__PURE__*/ _noopQrlDEV("test1_ZUBkW4dA8WM", { + file: "/user/qwik/src/test.tsx", + lo: 88, + hi: 136, + displayName: "test.tsx_test1" +}); +export const test2 = /*#__PURE__*/ _noopQrlDEV("test2_nGoxYIFmFHk", { + file: "/user/qwik/src/test.tsx", + lo: 164, + hi: 187, + displayName: "test.tsx_test2" +}); +export const test3 = /*#__PURE__*/ _noopQrlDEV("test3_0B4I8rVZdZw", { + file: "/user/qwik/src/test.tsx", + lo: 215, + hi: 231, + displayName: "test.tsx_test3" +}); +export const test4 = /*#__PURE__*/ _noopQrlDEV("test4_lka0Opdt3Nk", { + file: "/user/qwik/src/test.tsx", + lo: 259, + hi: 274, + displayName: "test.tsx_test4" +}); +export const test5 = /*#__PURE__*/ _noopQrlDEV("test5_opUEX0KqODU", { + file: "/user/qwik/src/test.tsx", + lo: 302, + hi: 314, + displayName: "test.tsx_test5" +}); + + +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AAGE,OAAO,MAAM;;;;;GAIV;AACH,OAAO,MAAM;;;;;GAEV;AACH,OAAO,MAAM;;;;;GACV;AACH,OAAO,MAAM;;;;;GAA2B;AACxC,OAAO,MAAM;;;;;GAAwB\"}") +== DIAGNOSTICS == + +[] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__relative_paths.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__relative_paths.snap index a6114b42a58..2c5fe6d84fe 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__relative_paths.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__relative_paths.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3415 +assertion_line: 3454 expression: output --- ============================= ../../node_modules/dep/dist/lib.mjs_App_component_div_p_button_onClick_8dWUa0cJAr4.js (ENTRY POINT)== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__rename_builder_io.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__rename_builder_io.snap index b2fbb5d38b5..749adcf81f4 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__rename_builder_io.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__rename_builder_io.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3947 +assertion_line: 3986 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__root_level_self_referential_qrl.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__root_level_self_referential_qrl.snap index 6b937484c59..1123a05442a 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__root_level_self_referential_qrl.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__root_level_self_referential_qrl.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5803 +assertion_line: 5842 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__root_level_self_referential_qrl_inline.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__root_level_self_referential_qrl_inline.snap index 514984dbe3d..9eedb0fca7f 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__root_level_self_referential_qrl_inline.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__root_level_self_referential_qrl_inline.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5826 +assertion_line: 5865 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_jsx_events.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_jsx_events.snap index 9f80959530b..450cb96d014 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_jsx_events.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_jsx_events.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4704 +assertion_line: 4743 expression: output --- ==INPUT== @@ -41,96 +41,18 @@ const _qrl_ManyEventsComponent_component_ndbrzxiyG3g = /*#__PURE__*/ qrl(()=>imp Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;cAG8B\"}") -============================= test.tsx_ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA.js (ENTRY POINT)== - -export const ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA = ()=>{}; - - -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"gFAagB,KAAO\"}") -/* -{ - "origin": "test.tsx", - "name": "ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA", - "entry": null, - "displayName": "test.tsx_ManyEventsComponent_component_div_button_q_e_click_1", - "hash": "BOulU3QpiyA", - "canonicalFilename": "test.tsx_ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA", - "path": "", - "extension": "js", - "parent": "ManyEventsComponent_component_ndbrzxiyG3g", - "ctxKind": "eventHandler", - "ctxName": "onClick$", - "captures": false, - "loc": [ - 252, - 260 - ] -} -*/ -============================= test.tsx_ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs.js (ENTRY POINT)== - -export const ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs = ()=>{}; - - -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"8EAgByB,KAAO\"}") -/* -{ - "origin": "test.tsx", - "name": "ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs", - "entry": null, - "displayName": "test.tsx_ManyEventsComponent_component_div_button_q_d_focus", - "hash": "fR03UCeyKSs", - "canonicalFilename": "test.tsx_ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs", - "path": "", - "extension": "js", - "parent": "ManyEventsComponent_component_ndbrzxiyG3g", - "ctxKind": "eventHandler", - "ctxName": "document:onFocus$", - "captures": false, - "loc": [ - 347, - 355 - ] -} -*/ -============================= test.tsx_ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY.js (ENTRY POINT)== - -export const ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY = ()=>{}; - - -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"6EAce,KAAO\"}") -/* -{ - "origin": "test.tsx", - "name": "ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY", - "entry": null, - "displayName": "test.tsx_ManyEventsComponent_component_div_button_q_e_blur", - "hash": "LVmlrV6TsTY", - "canonicalFilename": "test.tsx_ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY", - "path": "", - "extension": "js", - "parent": "ManyEventsComponent_component_ndbrzxiyG3g", - "ctxKind": "eventHandler", - "ctxName": "onBlur$", - "captures": false, - "loc": [ - 277, - 285 - ] -} -*/ ============================= test.tsx_ManyEventsComponent_component_ndbrzxiyG3g.js (ENTRY POINT)== +import { _noopQrl } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; -import { qrl } from "@qwik.dev/core"; // -const _qrl_ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs = /*#__PURE__*/ qrl(()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs"), "ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs"); -const _qrl_ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0 = /*#__PURE__*/ qrl(()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0"), "ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0"); -const _qrl_ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY = /*#__PURE__*/ qrl(()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY"), "ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY"); -const _qrl_ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA = /*#__PURE__*/ qrl(()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA"), "ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA"); -const _qrl_ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg = /*#__PURE__*/ qrl(()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg"), "ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg"); -const _qrl_ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles = /*#__PURE__*/ qrl(()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles"), "ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles"); -const _qrl_ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs = /*#__PURE__*/ qrl(()=>import("./test.tsx_ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs"), "ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs"); +const _qrl_ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs"); +const _qrl_ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0 = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0"); +const _qrl_ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY"); +const _qrl_ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA"); +const _qrl_ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg"); +const _qrl_ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles"); +const _qrl_ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs"); // export const ManyEventsComponent_component_ndbrzxiyG3g = ()=>{ return /*#__PURE__*/ _jsxSorted("div", null, null, [ @@ -170,110 +92,6 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma ] } */ -============================= test.tsx_ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0.js (ENTRY POINT)== - -export const ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0 = ()=>{}; - - -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"uFAeyB,KAAO\"}") -/* -{ - "origin": "test.tsx", - "name": "ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0", - "entry": null, - "displayName": "test.tsx_ManyEventsComponent_component_div_button_q_e_another_custom", - "hash": "ZC5Gt2v0qH0", - "canonicalFilename": "test.tsx_ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0", - "path": "", - "extension": "js", - "parent": "ManyEventsComponent_component_ndbrzxiyG3g", - "ctxKind": "eventHandler", - "ctxName": "on-anotherCustom$", - "captures": false, - "loc": [ - 312, - 320 - ] -} -*/ -============================= test.tsx_ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs.js (ENTRY POINT)== - -export const ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs = ()=>{}; - - -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"8EAiBuB,KAAO\"}") -/* -{ - "origin": "test.tsx", - "name": "ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs", - "entry": null, - "displayName": "test.tsx_ManyEventsComponent_component_div_button_q_w_click", - "hash": "DjpgJ0bcgJs", - "canonicalFilename": "test.tsx_ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs", - "path": "", - "extension": "js", - "parent": "ManyEventsComponent_component_ndbrzxiyG3g", - "ctxKind": "eventHandler", - "ctxName": "window:onClick$", - "captures": false, - "loc": [ - 380, - 388 - ] -} -*/ -============================= test.tsx_ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg.js (ENTRY POINT)== - -export const ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg = ()=>{}; - - -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"8EAOgB,KAAO\"}") -/* -{ - "origin": "test.tsx", - "name": "ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg", - "entry": null, - "displayName": "test.tsx_ManyEventsComponent_component_div_button_q_e_click", - "hash": "z0X12CPQocg", - "canonicalFilename": "test.tsx_ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg", - "path": "", - "extension": "js", - "parent": "ManyEventsComponent_component_ndbrzxiyG3g", - "ctxKind": "eventHandler", - "ctxName": "onClick$", - "captures": false, - "loc": [ - 150, - 158 - ] -} -*/ -============================= test.tsx_ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles.js (ENTRY POINT)== - -export const ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles = ()=>{}; - - -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"iFAQmB,KAAO\"}") -/* -{ - "origin": "test.tsx", - "name": "ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles", - "entry": null, - "displayName": "test.tsx_ManyEventsComponent_component_div_button_q_e_dblclick", - "hash": "VZGqMEVFles", - "canonicalFilename": "test.tsx_ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles", - "path": "", - "extension": "js", - "parent": "ManyEventsComponent_component_ndbrzxiyG3g", - "ctxKind": "eventHandler", - "ctxName": "onDblClick$", - "captures": false, - "loc": [ - 179, - 187 - ] -} -*/ == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_rest_props.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_rest_props.snap index dc9a68a2162..2d9689c1ebe 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_rest_props.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_rest_props.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4577 +assertion_line: 4616 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_destructure_args.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_destructure_args.snap index b98255c468f..ac8334b3828 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_destructure_args.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_destructure_args.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3620 +assertion_line: 3659 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index.snap index 2c6c2972735..dea60d71d23 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5002 +assertion_line: 5041 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index_and_capture_ref.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index_and_capture_ref.snap index a81ae6ef9a4..19a06f439b6 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index_and_capture_ref.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_multiple_qrls_with_item_and_index_and_capture_ref.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5026 +assertion_line: 5065 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl.snap index 59d2a17e418..dd93b055baf 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4847 +assertion_line: 4886 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_2.snap index 8c721e3fccd..10ca4339d5a 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_2.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4903 +assertion_line: 4942 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_index.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_index.snap index 963111e865e..86af426929c 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_index.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_index.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4944 +assertion_line: 4983 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_nested_components.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_nested_components.snap index cede63eeeda..65903de5310 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_nested_components.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_extract_single_qrl_with_nested_components.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5053 +assertion_line: 5092 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_handle_dangerously_set_inner_html.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_handle_dangerously_set_inner_html.snap index f029882a2df..2fcd6190110 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_handle_dangerously_set_inner_html.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_handle_dangerously_set_inner_html.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3779 +assertion_line: 3818 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_ignore_null_inlined_qrl.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_ignore_null_inlined_qrl.snap index 0c143649480..f0237d8e7d6 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_ignore_null_inlined_qrl.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_ignore_null_inlined_qrl.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4653 +assertion_line: 4692 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_make_component_jsx_split_with_bind.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_make_component_jsx_split_with_bind.snap index 7012ec149f9..405fcc7581f 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_make_component_jsx_split_with_bind.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_make_component_jsx_split_with_bind.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5386 +assertion_line: 5425 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_mark_props_as_var_props_for_inner_cmp.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_mark_props_as_var_props_for_inner_cmp.snap index e1ea52e03e1..652eef5eeef 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_mark_props_as_var_props_for_inner_cmp.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_mark_props_as_var_props_for_inner_cmp.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4197 +assertion_line: 4236 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_attributes_with_spread_props.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_attributes_with_spread_props.snap index daf0184eafe..fef22676d94 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_attributes_with_spread_props.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_attributes_with_spread_props.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4598 +assertion_line: 4637 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_attributes_with_spread_props_before_and_after.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_attributes_with_spread_props_before_and_after.snap index cfb6a37dcdd..06781d4e420 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_attributes_with_spread_props_before_and_after.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_attributes_with_spread_props_before_and_after.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4615 +assertion_line: 4654 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_bind_checked_and_on_input.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_bind_checked_and_on_input.snap index b0335a3af9d..47ab9f5e4a5 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_bind_checked_and_on_input.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_bind_checked_and_on_input.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4821 +assertion_line: 4860 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_bind_value_and_on_input.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_bind_value_and_on_input.snap index 0f8f45bac6c..323c8dbccc6 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_bind_value_and_on_input.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_bind_value_and_on_input.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4795 +assertion_line: 4834 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_on_input_and_bind_checked.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_on_input_and_bind_checked.snap index e63e493eb51..7e666a41469 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_on_input_and_bind_checked.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_on_input_and_bind_checked.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5193 +assertion_line: 5232 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_on_input_and_bind_value.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_on_input_and_bind_value.snap index 33dd8a3ed0d..618fc4bba97 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_on_input_and_bind_value.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_merge_on_input_and_bind_value.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5167 +assertion_line: 5206 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_move_bind_value_to_var_props.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_move_bind_value_to_var_props.snap index b839e84a982..07a0a562692 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_move_bind_value_to_var_props.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_move_bind_value_to_var_props.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5317 +assertion_line: 5356 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_move_props_related_to_iteration_variables_to_var_props.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_move_props_related_to_iteration_variables_to_var_props.snap index 0ed9072b32c..e4d5256f15e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_move_props_related_to_iteration_variables_to_var_props.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_move_props_related_to_iteration_variables_to_var_props.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5348 +assertion_line: 5387 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_generate_conflicting_props_identifiers.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_generate_conflicting_props_identifiers.snap index 85536ffd97b..fb762980747 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_generate_conflicting_props_identifiers.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_generate_conflicting_props_identifiers.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4551 +assertion_line: 4590 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_move_over_side_effects.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_move_over_side_effects.snap index 7ac59e0eff8..007a829b8b8 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_move_over_side_effects.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_move_over_side_effects.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4632 +assertion_line: 4671 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_bind_checked_in_var_props_for_jsx_split.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_bind_checked_in_var_props_for_jsx_split.snap index 663d0df9811..2dbd0dbd045 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_bind_checked_in_var_props_for_jsx_split.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_bind_checked_in_var_props_for_jsx_split.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5285 +assertion_line: 5324 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_bind_value_in_var_props_for_jsx_split.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_bind_value_in_var_props_for_jsx_split.snap index ad76428fb98..48a7988a1a6 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_bind_value_in_var_props_for_jsx_split.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_bind_value_in_var_props_for_jsx_split.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5253 +assertion_line: 5292 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_events_on_non_elements.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_events_on_non_elements.snap index 447e335d333..6fdfe5a351e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_events_on_non_elements.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_events_on_non_elements.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4768 +assertion_line: 4807 expression: output --- ==INPUT== @@ -22,32 +22,6 @@ export const Greeter = component$(() => { }); -============================= test.tsx_Greeter_component_div_AnotherComponent_onClick_9BwXJW3s0yA.tsx (ENTRY POINT)== - -export const Greeter_component_div_AnotherComponent_onClick_9BwXJW3s0yA = ()=>{}; - - -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"0EAUgC,KAAO\"}") -/* -{ - "origin": "test.tsx", - "name": "Greeter_component_div_AnotherComponent_onClick_9BwXJW3s0yA", - "entry": null, - "displayName": "test.tsx_Greeter_component_div_AnotherComponent_onClick", - "hash": "9BwXJW3s0yA", - "canonicalFilename": "test.tsx_Greeter_component_div_AnotherComponent_onClick_9BwXJW3s0yA", - "path": "", - "extension": "tsx", - "parent": "Greeter_component_n7HuG2hhU0Q", - "ctxKind": "eventHandler", - "ctxName": "onClick$", - "captures": false, - "loc": [ - 319, - 327 - ] -} -*/ ============================= test.tsx == import { componentQrl } from "@qwik.dev/core"; @@ -59,40 +33,14 @@ export const Greeter = /*#__PURE__*/ componentQrl(_qrl_Greeter_component_n7HuG2h Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAKA,OAAO,MAAM,wBAAU,iDASpB\"}") -============================= test.tsx_Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w.tsx (ENTRY POINT)== - -export const Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w = ()=>{}; - - -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"yEAQ8B,KAAO\"}") -/* -{ - "origin": "test.tsx", - "name": "Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w", - "entry": null, - "displayName": "test.tsx_Greeter_component_div_CustomComponent_onClick", - "hash": "6xTF8kMcS9w", - "canonicalFilename": "test.tsx_Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w", - "path": "", - "extension": "tsx", - "parent": "Greeter_component_n7HuG2hhU0Q", - "ctxKind": "eventHandler", - "ctxName": "onClick$", - "captures": false, - "loc": [ - 251, - 259 - ] -} -*/ ============================= test.tsx_Greeter_component_n7HuG2hhU0Q.tsx (ENTRY POINT)== +import { _noopQrl } from "@qwik.dev/core"; import { AnotherComponent } from "./another-component"; import { CustomComponent } from "./custom-component"; -import { qrl } from "@qwik.dev/core"; // -const _qrl_Greeter_component_div_AnotherComponent_onClick_9BwXJW3s0yA = /*#__PURE__*/ qrl(()=>import("./test.tsx_Greeter_component_div_AnotherComponent_onClick_9BwXJW3s0yA"), "Greeter_component_div_AnotherComponent_onClick_9BwXJW3s0yA"); -const _qrl_Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w = /*#__PURE__*/ qrl(()=>import("./test.tsx_Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w"), "Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w"); +const _qrl_Greeter_component_div_AnotherComponent_onClick_9BwXJW3s0yA = /*#__PURE__*/ _noopQrl("Greeter_component_div_AnotherComponent_onClick_9BwXJW3s0yA"); +const _qrl_Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w = /*#__PURE__*/ _noopQrl("Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w"); // export const Greeter_component_n7HuG2hhU0Q = ()=>{ return
diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_fn.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_fn.snap index f73d06646e1..c540f66182f 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_fn.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_fn.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4244 +assertion_line: 4283 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_ternary_function_operator_with_fn.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_ternary_function_operator_with_fn.snap index a98d2bf86fe..11fa280931b 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_ternary_function_operator_with_fn.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_ternary_function_operator_with_fn.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4404 +assertion_line: 4443 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_var_template_string.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_var_template_string.snap index b0fe7016158..17c698ea230 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_var_template_string.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_wrap_var_template_string.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4331 +assertion_line: 4370 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props.snap index 3833b1dae29..2f5a027ed48 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4433 +assertion_line: 4472 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop.snap index ce45d1cd2ce..9abe4cfddee 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4452 +assertion_line: 4491 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop2.snap index 005dbfec8d3..5a4e43b361b 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop2.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4471 +assertion_line: 4510 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop3.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop3.snap index ff26fc5b218..a73aadd7392 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop3.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop3.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4490 +assertion_line: 4529 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop4.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop4.snap index 23a8beef615..79a8e40164c 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop4.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop4.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4510 +assertion_line: 4549 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop5.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop5.snap index 7627fe2eb26..2cb92bb0256 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop5.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_split_spread_props_with_additional_prop5.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4527 +assertion_line: 4566 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_and_item_index_in_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_and_item_index_in_loop.snap index 0707162f35c..6e8e5a2ae13 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_and_item_index_in_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_and_item_index_in_loop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5460 +assertion_line: 5499 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_in_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_in_loop.snap index f4795fd1950..9265a92c074 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_in_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_block_scoped_variables_in_loop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5409 +assertion_line: 5448 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_component_with_normal_function.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_component_with_normal_function.snap index 54f5f79cf70..013c546df8e 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_component_with_normal_function.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_component_with_normal_function.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5074 +assertion_line: 5113 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_event_names_without_jsx_transpile.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_event_names_without_jsx_transpile.snap index b5d1a267a08..ec1b3de06c0 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_event_names_without_jsx_transpile.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_event_names_without_jsx_transpile.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4739 +assertion_line: 4778 expression: output --- ==INPUT== @@ -24,32 +24,6 @@ export const Greeter = component$(() => { }); -============================= test.tsx_Greeter_component_div_div_q_e_click_1_s7p0zjWZpqo.tsx (ENTRY POINT)== - -export const Greeter_component_div_div_q_e_click_1_s7p0zjWZpqo = ()=>{}; - - -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"iEAYkB,KAAO\"}") -/* -{ - "origin": "test.tsx", - "name": "Greeter_component_div_div_q_e_click_1_s7p0zjWZpqo", - "entry": null, - "displayName": "test.tsx_Greeter_component_div_div_q_e_click_1", - "hash": "s7p0zjWZpqo", - "canonicalFilename": "test.tsx_Greeter_component_div_div_q_e_click_1_s7p0zjWZpqo", - "path": "", - "extension": "tsx", - "parent": "Greeter_component_n7HuG2hhU0Q", - "ctxKind": "eventHandler", - "ctxName": "onClick$", - "captures": false, - "loc": [ - 263, - 271 - ] -} -*/ ============================= test.tsx == import { componentQrl } from "@qwik.dev/core"; @@ -61,66 +35,14 @@ export const Greeter = /*#__PURE__*/ componentQrl(_qrl_Greeter_component_n7HuG2h Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;AAIA,OAAO,MAAM,wBAAU,iDAYpB\"}") -============================= test.tsx_Greeter_component_div_div_q_e_click_wYSPnQEGCbA.tsx (ENTRY POINT)== - -export const Greeter_component_div_div_q_e_click_wYSPnQEGCbA = ()=>{}; - - -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"+DAWkB,KAAO\"}") -/* -{ - "origin": "test.tsx", - "name": "Greeter_component_div_div_q_e_click_wYSPnQEGCbA", - "entry": null, - "displayName": "test.tsx_Greeter_component_div_div_q_e_click", - "hash": "wYSPnQEGCbA", - "canonicalFilename": "test.tsx_Greeter_component_div_div_q_e_click_wYSPnQEGCbA", - "path": "", - "extension": "tsx", - "parent": "Greeter_component_n7HuG2hhU0Q", - "ctxKind": "eventHandler", - "ctxName": "onClick$", - "captures": false, - "loc": [ - 233, - 241 - ] -} -*/ -============================= test.tsx_Greeter_component_div_div_q_e_click_2_B9tqzgApK9E.tsx (ENTRY POINT)== - -export const Greeter_component_div_div_q_e_click_2_B9tqzgApK9E = ()=>{}; - - -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"iEAakB,KAAO\"}") -/* -{ - "origin": "test.tsx", - "name": "Greeter_component_div_div_q_e_click_2_B9tqzgApK9E", - "entry": null, - "displayName": "test.tsx_Greeter_component_div_div_q_e_click_2", - "hash": "B9tqzgApK9E", - "canonicalFilename": "test.tsx_Greeter_component_div_div_q_e_click_2_B9tqzgApK9E", - "path": "", - "extension": "tsx", - "parent": "Greeter_component_n7HuG2hhU0Q", - "ctxKind": "eventHandler", - "ctxName": "onClick$", - "captures": false, - "loc": [ - 293, - 301 - ] -} -*/ ============================= test.tsx_Greeter_component_n7HuG2hhU0Q.tsx (ENTRY POINT)== +import { _noopQrl } from "@qwik.dev/core"; import mongo from "mongodb"; -import { qrl } from "@qwik.dev/core"; // -const _qrl_Greeter_component_div_div_q_e_click_1_s7p0zjWZpqo = /*#__PURE__*/ qrl(()=>import("./test.tsx_Greeter_component_div_div_q_e_click_1_s7p0zjWZpqo"), "Greeter_component_div_div_q_e_click_1_s7p0zjWZpqo"); -const _qrl_Greeter_component_div_div_q_e_click_2_B9tqzgApK9E = /*#__PURE__*/ qrl(()=>import("./test.tsx_Greeter_component_div_div_q_e_click_2_B9tqzgApK9E"), "Greeter_component_div_div_q_e_click_2_B9tqzgApK9E"); -const _qrl_Greeter_component_div_div_q_e_click_wYSPnQEGCbA = /*#__PURE__*/ qrl(()=>import("./test.tsx_Greeter_component_div_div_q_e_click_wYSPnQEGCbA"), "Greeter_component_div_div_q_e_click_wYSPnQEGCbA"); +const _qrl_Greeter_component_div_div_q_e_click_1_s7p0zjWZpqo = /*#__PURE__*/ _noopQrl("Greeter_component_div_div_q_e_click_1_s7p0zjWZpqo"); +const _qrl_Greeter_component_div_div_q_e_click_2_B9tqzgApK9E = /*#__PURE__*/ _noopQrl("Greeter_component_div_div_q_e_click_2_B9tqzgApK9E"); +const _qrl_Greeter_component_div_div_q_e_click_wYSPnQEGCbA = /*#__PURE__*/ _noopQrl("Greeter_component_div_div_q_e_click_wYSPnQEGCbA"); // export const Greeter_component_n7HuG2hhU0Q = ()=>{ // Double count watch diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handler_in_for_of_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handler_in_for_of_loop.snap index 8f36c87bb31..d19d62ef8ce 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handler_in_for_of_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handler_in_for_of_loop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5685 +assertion_line: 5724 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handlers_capturing_cross_scope_in_nested_loops.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handlers_capturing_cross_scope_in_nested_loops.snap index 1a1dd4922a1..0a55d1ac603 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handlers_capturing_cross_scope_in_nested_loops.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_handlers_capturing_cross_scope_in_nested_loops.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5542 +assertion_line: 5581 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_loop_multiple_handler_with_different_captures.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_loop_multiple_handler_with_different_captures.snap index e7c755ba08e..031f5fe0fef 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_loop_multiple_handler_with_different_captures.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_loop_multiple_handler_with_different_captures.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5709 +assertion_line: 5748 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_and_item_index_in_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_and_item_index_in_loop.snap index d00a5b56135..9592a21cfcd 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_and_item_index_in_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_and_item_index_in_loop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5485 +assertion_line: 5524 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_in_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_in_loop.snap index 7d5d87784ff..fdf8885f218 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_in_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_block_scoped_variables_in_loop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5434 +assertion_line: 5473 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers.snap index ed343fcedf2..04fb5b580e2 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5121 +assertion_line: 5160 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers_case2.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers_case2.snap index de8ffc63f8f..15ffbbc6a1c 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers_case2.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_multiple_event_handlers_case2.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5144 +assertion_line: 5183 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops.snap index 852d49bd9b5..8d443e9bc76 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5095 +assertion_line: 5134 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops_handler_captures_only_inner_scope.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops_handler_captures_only_inner_scope.snap index de0d58e7a3e..97631dfc9a4 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops_handler_captures_only_inner_scope.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_nested_loops_handler_captures_only_inner_scope.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5612 +assertion_line: 5651 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_qrls_in_ternary_expression.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_qrls_in_ternary_expression.snap index 926e9f82850..57f81d92ea2 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_qrls_in_ternary_expression.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_qrls_in_ternary_expression.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5219 +assertion_line: 5258 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_same_element_one_handler_with_captures_one_without.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_same_element_one_handler_with_captures_one_without.snap index 5329e1dafa0..38047991fe4 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_same_element_one_handler_with_captures_one_without.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_same_element_one_handler_with_captures_one_without.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5580 +assertion_line: 5619 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_three_nested_loops_handler_captures_outer_only.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_three_nested_loops_handler_captures_outer_only.snap index 62840bf72b1..f25acc9ca25 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_three_nested_loops_handler_captures_outer_only.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_three_nested_loops_handler_captures_outer_only.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5645 +assertion_line: 5684 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_two_handlers_capturing_different_block_scope_in_loop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_two_handlers_capturing_different_block_scope_in_loop.snap index c4cc5581737..46602ba0615 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_two_handlers_capturing_different_block_scope_in_loop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_two_handlers_capturing_different_block_scope_in_loop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 5511 +assertion_line: 5550 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_work.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_work.snap deleted file mode 100644 index 36e71498bc3..00000000000 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_work.snap +++ /dev/null @@ -1,99 +0,0 @@ ---- -source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 6202 -expression: output ---- -==INPUT== - - - import { component$ } from "@qwik.dev/core"; - import { globalAction$ } from "@qwik.dev/router"; - - export const useSecretAction = globalAction$( - async (payload) => console.log(payload) || 'hi' - ); - - export const SecretForm = component$(() => { - const action = useSecretAction(); - return
{action.value}
- }); - -============================= test.js == - -import { globalActionQrl } from "@qwik.dev/router"; -import { qrl } from "@qwik.dev/core"; -import { componentQrl } from "@qwik.dev/core"; -// -const _qrl_SecretForm_component_1noi8FsTz7c = /*#__PURE__*/ qrl(()=>import("./test.tsx_SecretForm_component_1noi8FsTz7c"), "SecretForm_component_1noi8FsTz7c"); -const _qrl_useSecretAction_globalAction_Cbn41AEUQ0Q = /*#__PURE__*/ qrl(()=>import("./test.tsx_useSecretAction_globalAction_Cbn41AEUQ0Q"), "useSecretAction_globalAction_Cbn41AEUQ0Q"); -// -export const useSecretAction = globalActionQrl(_qrl_useSecretAction_globalAction_Cbn41AEUQ0Q); -export const SecretForm = /*#__PURE__*/ componentQrl(_qrl_SecretForm_component_1noi8FsTz7c); - - -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;;;;AAIE,OAAO,MAAM,kBAAkB,+DAE7B;AAEF,OAAO,MAAM,2BAAa,oDAGvB\"}") -============================= test.tsx_SecretForm_component_1noi8FsTz7c.js (ENTRY POINT)== - -import { useSecretAction } from "./test"; -import { _jsxSorted } from "@qwik.dev/core"; -import { _wrapProp } from "@qwik.dev/core"; -// -export const SecretForm_component_1noi8FsTz7c = ()=>{ - const action = useSecretAction(); - return /*#__PURE__*/ _jsxSorted("div", null, null, _wrapProp(action), 3, "u6_0"); -}; - - -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;;;gDAQuC;IACpC,MAAM,SAAS;IACf,qBAAO,WAAC,6BAAK;AACd\"}") -/* -{ - "origin": "test.tsx", - "name": "SecretForm_component_1noi8FsTz7c", - "entry": null, - "displayName": "test.tsx_SecretForm_component", - "hash": "1noi8FsTz7c", - "canonicalFilename": "test.tsx_SecretForm_component_1noi8FsTz7c", - "path": "", - "extension": "js", - "parent": null, - "ctxKind": "function", - "ctxName": "component$", - "captures": false, - "loc": [ - 246, - 330 - ] -} -*/ -============================= test.tsx_useSecretAction_globalAction_Cbn41AEUQ0Q.js (ENTRY POINT)== - -export const useSecretAction_globalAction_Cbn41AEUQ0Q = async (payload)=>console.log(payload) || 'hi'; - - -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\"wDAKG,OAAO,UAAY,QAAQ,GAAG,CAAC,YAAY\"}") -/* -{ - "origin": "test.tsx", - "name": "useSecretAction_globalAction_Cbn41AEUQ0Q", - "entry": null, - "displayName": "test.tsx_useSecretAction_globalAction", - "hash": "Cbn41AEUQ0Q", - "canonicalFilename": "test.tsx_useSecretAction_globalAction_Cbn41AEUQ0Q", - "path": "", - "extension": "js", - "parent": null, - "ctxKind": "function", - "ctxName": "globalAction$", - "captures": false, - "loc": [ - 153, - 200 - ], - "paramNames": [ - "payload" - ] -} -*/ -== DIAGNOSTICS == - -[] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_inner_inline_component_prop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_inner_inline_component_prop.snap index 6ac487c942c..e92b72450da 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_inner_inline_component_prop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_inner_inline_component_prop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4087 +assertion_line: 4126 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_logical_expression_in_template.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_logical_expression_in_template.snap index 46f2dd5c59d..9eb2459b3ba 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_logical_expression_in_template.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_logical_expression_in_template.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4381 +assertion_line: 4420 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_object_with_fn_signal.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_object_with_fn_signal.snap index 9add6f9d424..eee537b2cb0 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_object_with_fn_signal.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_object_with_fn_signal.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4175 +assertion_line: 4214 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_prop_from_destructured_array.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_prop_from_destructured_array.snap index a3340a6832e..0daf0cd2288 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_prop_from_destructured_array.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_prop_from_destructured_array.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4117 +assertion_line: 4156 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_store_expression.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_store_expression.snap index 35c70ee026a..227c11ae77a 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_store_expression.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_store_expression.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4298 +assertion_line: 4337 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_type_asserted_variables_in_template.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_type_asserted_variables_in_template.snap index 0a03787679f..3691fa55492 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_type_asserted_variables_in_template.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_wrap_type_asserted_variables_in_template.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4359 +assertion_line: 4398 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__special_jsx.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__special_jsx.snap index 30a14f18aad..743249a5471 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__special_jsx.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__special_jsx.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2281 +assertion_line: 2282 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__support_windows_paths.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__support_windows_paths.snap index 96df7040f14..122ac1ea053 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__support_windows_paths.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__support_windows_paths.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2062 +assertion_line: 2063 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__ternary_prop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__ternary_prop.snap index fe6f46cf74c..c74e2e4b470 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__ternary_prop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__ternary_prop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3876 +assertion_line: 3915 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__transform_qrl_in_regular_prop.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__transform_qrl_in_regular_prop.snap index 4ff6c052b8f..b19ae37dfad 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__transform_qrl_in_regular_prop.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__transform_qrl_in_regular_prop.snap @@ -1,6 +1,6 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 3901 +assertion_line: 3940 expression: output --- ==INPUT== diff --git a/packages/qwik/src/optimizer/core/src/test.rs b/packages/qwik/src/optimizer/core/src/test.rs index c69ffeef4b4..fd89fe8f2fc 100644 --- a/packages/qwik/src/optimizer/core/src/test.rs +++ b/packages/qwik/src/optimizer/core/src/test.rs @@ -871,7 +871,7 @@ export const Works = component$((props) => { const text = 'hola'; return ( <> -
console.log('in server', text))}>
+
server$(() => console.log('in server', text))}>
foo()}>
); @@ -1843,10 +1843,10 @@ export const Parent = component$(() => { serverStuff$(async () => { // should be removed too const a = $(() => { - // from $(), should not be removed + dontRemoveThisDollar(); }); const b = client$(() => { - // from clien$(), should not be removed + dontRemoveThisClient(); }); return [a,b]; }) @@ -1854,7 +1854,7 @@ export const Parent = component$(() => { serverLoader$(handler); useTask$(() => { - // Code + runSomething(); }); return ( @@ -1950,6 +1950,7 @@ export const Parent = component$(() => { useTask$(() => { // Code + runSomething(); }); return ( @@ -2770,6 +2771,44 @@ export const App = component$(() => { }); } +#[test] +fn example_post_dce_noop_segment() { + test_input!(TestInput { + code: r#" +import { component$, useTask$, useStore } from '@qwik.dev/core'; +import { isServer } from '@qwik.dev/core/build'; + +export const App = component$(() => { + const state = useStore({ count: 0 }); + + // This task only runs on server; on client build it becomes empty after DCE + useTask$(() => { + if (isServer) { + state.count = 42; + } + }); + + // This task has both server and client code; should NOT become noop + useTask$(() => { + if (isServer) { + state.count = 99; + } + console.log('always runs'); + }); + + return
{state.count}
; +}); +"# + .to_string(), + is_server: Some(false), + transpile_jsx: true, + transpile_ts: true, + entry_strategy: EntryStrategy::Segment, + mode: EmitMode::Prod, + ..TestInput::default() + }); +} + #[test] fn example_derived_signals_div() { test_input!(TestInput { @@ -6198,24 +6237,28 @@ export const Test = component$(() => { } #[test] -fn should_work() { +fn noop_empty_body() { test_input!(TestInput { code: r#" - import { component$ } from "@qwik.dev/core"; - import { globalAction$ } from "@qwik.dev/router"; - - export const useSecretAction = globalAction$( - async (payload) => console.log(payload) || 'hi' - ); + import { component$, isServer, $ } from "@qwik.dev/core"; - export const SecretForm = component$(() => { - const action = useSecretAction(); - return
{action.value}
+ export const test1 = $(() => { + if (isServer) { + // no-op + } + }); + export const test2 = $(() => { + // no-op }); + export const test3 = $(function() { + }); + export const test4 = $(() => undefined); + export const test5 = $(() => void 0); + export const test5 = $(() => isServer ? 5 : undefined); "# .to_string(), - transpile_ts: true, - transpile_jsx: true, + is_server: Some(false), + mode: EmitMode::Dev, ..TestInput::default() }); } From a88d7ef9147d10cbdc1331cbcbefdf43841f8dec Mon Sep 17 00:00:00 2001 From: Varixo Date: Thu, 18 Sep 2025 23:39:49 +0200 Subject: [PATCH 10/11] feat(core): add noopQrl to manifest for empty QRLs --- ...core__test__example_drop_side_effects.snap | 26 +++++ ...wik_core__test__example_noop_dev_mode.snap | 107 ++++++++++++++++++ ...__test__example_reg_ctx_name_segments.snap | 52 +++++++++ ...core__test__example_strip_client_code.snap | 81 +++++++++++++ ...core__test__example_strip_server_code.snap | 52 +++++++++ .../qwik/src/optimizer/core/src/transform.rs | 21 +++- .../qwik/src/optimizer/src/plugins/plugin.ts | 1 - 7 files changed, 338 insertions(+), 2 deletions(-) diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_drop_side_effects.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_drop_side_effects.snap index 4c7c8968665..5201ef9dc2a 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_drop_side_effects.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_drop_side_effects.snap @@ -35,6 +35,32 @@ export default component$(() => { ) }); +============================= test.tsx_api_server_JonPp043gH0.js (ENTRY POINT)== + +export const api_server_JonPp043gH0 = null; + + +Some("{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\"}") +/* +{ + "origin": "test.tsx", + "name": "api_server_JonPp043gH0", + "entry": null, + "displayName": "test.tsx_api_server", + "hash": "JonPp043gH0", + "canonicalFilename": "test.tsx_api_server_JonPp043gH0", + "path": "", + "extension": "js", + "parent": null, + "ctxKind": "function", + "ctxName": "server$", + "captures": false, + "loc": [ + 0, + 0 + ] +} +*/ ============================= test.js == import { serverQrl } from "@qwik.dev/router"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_noop_dev_mode.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_noop_dev_mode.snap index 57b99935dc8..b023cdfcae0 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_noop_dev_mode.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_noop_dev_mode.snap @@ -30,6 +30,113 @@ export const App = component$(() => { ); }); +============================= test.tsx_App_component_serverStuff_ebyHaP15ytQ.js (ENTRY POINT)== + +export const App_component_serverStuff_ebyHaP15ytQ = null; + + +Some("{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\"}") +/* +{ + "origin": "test.tsx", + "name": "App_component_serverStuff_ebyHaP15ytQ", + "entry": null, + "displayName": "test.tsx_App_component_serverStuff", + "hash": "ebyHaP15ytQ", + "canonicalFilename": "test.tsx_App_component_serverStuff_ebyHaP15ytQ", + "path": "", + "extension": "js", + "parent": "App_component_ckEPmXZlub0", + "ctxKind": "function", + "ctxName": "serverStuff$", + "captures": true, + "loc": [ + 0, + 0 + ], + "captureNames": [ + "stuff" + ] +} +*/ +============================= test.tsx_App_component_serverStuff_1_PQCqO0ANabY.js (ENTRY POINT)== + +export const App_component_serverStuff_1_PQCqO0ANabY = null; + + +Some("{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\"}") +/* +{ + "origin": "test.tsx", + "name": "App_component_serverStuff_1_PQCqO0ANabY", + "entry": null, + "displayName": "test.tsx_App_component_serverStuff_1", + "hash": "PQCqO0ANabY", + "canonicalFilename": "test.tsx_App_component_serverStuff_1_PQCqO0ANabY", + "path": "", + "extension": "js", + "parent": "App_component_ckEPmXZlub0", + "ctxKind": "function", + "ctxName": "serverStuff$", + "captures": false, + "loc": [ + 0, + 0 + ] +} +*/ +============================= test.tsx_App_component_Cmp_p_shouldRemove_uU0MG0jvQD4.js (ENTRY POINT)== + +export const App_component_Cmp_p_shouldRemove_uU0MG0jvQD4 = null; + + +Some("{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\"}") +/* +{ + "origin": "test.tsx", + "name": "App_component_Cmp_p_shouldRemove_uU0MG0jvQD4", + "entry": null, + "displayName": "test.tsx_App_component_Cmp_p_shouldRemove", + "hash": "uU0MG0jvQD4", + "canonicalFilename": "test.tsx_App_component_Cmp_p_shouldRemove_uU0MG0jvQD4", + "path": "", + "extension": "js", + "parent": "App_component_ckEPmXZlub0", + "ctxKind": "eventHandler", + "ctxName": "shouldRemove$", + "captures": false, + "loc": [ + 0, + 0 + ] +} +*/ +============================= test.tsx_App_component_Cmp_p_q_e_click_Yl4ybrJWrt4.js (ENTRY POINT)== + +export const App_component_Cmp_p_q_e_click_Yl4ybrJWrt4 = null; + + +Some("{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\"}") +/* +{ + "origin": "test.tsx", + "name": "App_component_Cmp_p_q_e_click_Yl4ybrJWrt4", + "entry": null, + "displayName": "test.tsx_App_component_Cmp_p_q_e_click", + "hash": "Yl4ybrJWrt4", + "canonicalFilename": "test.tsx_App_component_Cmp_p_q_e_click_Yl4ybrJWrt4", + "path": "", + "extension": "js", + "parent": "App_component_ckEPmXZlub0", + "ctxKind": "eventHandler", + "ctxName": "onClick$", + "captures": false, + "loc": [ + 0, + 0 + ] +} +*/ ============================= test.js == import { componentQrl } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments.snap index b6b109f106d..e4d68032d01 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_reg_ctx_name_segments.snap @@ -18,6 +18,58 @@ export const Works = component$((props) => { ); }); +============================= test.tsx_Works_component_Fragment_div_q_e_click_0UiSo8yqgZw.js (ENTRY POINT)== + +export const Works_component_Fragment_div_q_e_click_0UiSo8yqgZw = null; + + +Some("{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\"}") +/* +{ + "origin": "test.tsx", + "name": "Works_component_Fragment_div_q_e_click_0UiSo8yqgZw", + "entry": null, + "displayName": "test.tsx_Works_component_Fragment_div_q_e_click", + "hash": "0UiSo8yqgZw", + "canonicalFilename": "test.tsx_Works_component_Fragment_div_q_e_click_0UiSo8yqgZw", + "path": "", + "extension": "js", + "parent": "Works_component_t45qL4vNGv0", + "ctxKind": "eventHandler", + "ctxName": "onClick$", + "captures": false, + "loc": [ + 0, + 0 + ] +} +*/ +============================= test.tsx_Works_component_Fragment_div_q_e_click_1_0umAYq0xJhQ.js (ENTRY POINT)== + +export const Works_component_Fragment_div_q_e_click_1_0umAYq0xJhQ = null; + + +Some("{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\"}") +/* +{ + "origin": "test.tsx", + "name": "Works_component_Fragment_div_q_e_click_1_0umAYq0xJhQ", + "entry": null, + "displayName": "test.tsx_Works_component_Fragment_div_q_e_click_1", + "hash": "0umAYq0xJhQ", + "canonicalFilename": "test.tsx_Works_component_Fragment_div_q_e_click_1_0umAYq0xJhQ", + "path": "", + "extension": "js", + "parent": "Works_component_t45qL4vNGv0", + "ctxKind": "eventHandler", + "ctxName": "onClick$", + "captures": false, + "loc": [ + 0, + 0 + ] +} +*/ ============================= test.js == import "./foo"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_client_code.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_client_code.snap index 2a0505cf7cd..42aece3dfe4 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_client_code.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_client_code.snap @@ -44,6 +44,87 @@ export const Parent = component$(() => { ); }); +============================= components/component.tsx_Parent_component_useClientMount_Yn2kIDABoYw.js (ENTRY POINT)== + +export const Parent_component_useClientMount_Yn2kIDABoYw = null; + + +Some("{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\"}") +/* +{ + "origin": "components/component.tsx", + "name": "Parent_component_useClientMount_Yn2kIDABoYw", + "entry": null, + "displayName": "component.tsx_Parent_component_useClientMount", + "hash": "Yn2kIDABoYw", + "canonicalFilename": "component.tsx_Parent_component_useClientMount_Yn2kIDABoYw", + "path": "components", + "extension": "js", + "parent": "Parent_component_t6Wy3C0Q0XM", + "ctxKind": "function", + "ctxName": "useClientMount$", + "captures": true, + "loc": [ + 0, + 0 + ], + "captureNames": [ + "state" + ] +} +*/ +============================= components/component.tsx_Parent_component_div_shouldRemove_EBj69wTX1do.js (ENTRY POINT)== + +export const Parent_component_div_shouldRemove_EBj69wTX1do = null; + + +Some("{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\"}") +/* +{ + "origin": "components/component.tsx", + "name": "Parent_component_div_shouldRemove_EBj69wTX1do", + "entry": null, + "displayName": "component.tsx_Parent_component_div_shouldRemove", + "hash": "EBj69wTX1do", + "canonicalFilename": "component.tsx_Parent_component_div_shouldRemove_EBj69wTX1do", + "path": "components", + "extension": "js", + "parent": "Parent_component_t6Wy3C0Q0XM", + "ctxKind": "eventHandler", + "ctxName": "shouldRemove$", + "captures": false, + "loc": [ + 0, + 0 + ] +} +*/ +============================= components/component.tsx_Parent_component_div_q_e_click_oqNnfO6ubjU.js (ENTRY POINT)== + +export const Parent_component_div_q_e_click_oqNnfO6ubjU = null; + + +Some("{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\"}") +/* +{ + "origin": "components/component.tsx", + "name": "Parent_component_div_q_e_click_oqNnfO6ubjU", + "entry": null, + "displayName": "component.tsx_Parent_component_div_q_e_click", + "hash": "oqNnfO6ubjU", + "canonicalFilename": "component.tsx_Parent_component_div_q_e_click_oqNnfO6ubjU", + "path": "components", + "extension": "js", + "parent": "Parent_component_t6Wy3C0Q0XM", + "ctxKind": "eventHandler", + "ctxName": "onClick$", + "captures": false, + "loc": [ + 0, + 0 + ] +} +*/ ============================= components/component.js == import "./keep"; diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_server_code.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_server_code.snap index 7455830d526..7307e5317e0 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_server_code.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_strip_server_code.snap @@ -48,6 +48,58 @@ export const Parent = component$(() => { ); }); +============================= test.tsx_Parent_component_serverStuff_r1qAHX7Opp0.js (ENTRY POINT)== + +export const s_r1qAHX7Opp0 = null; + + +Some("{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\"}") +/* +{ + "origin": "test.tsx", + "name": "s_r1qAHX7Opp0", + "entry": null, + "displayName": "test.tsx_Parent_component_serverStuff", + "hash": "r1qAHX7Opp0", + "canonicalFilename": "test.tsx_Parent_component_serverStuff_r1qAHX7Opp0", + "path": "", + "extension": "js", + "parent": "s_0TaiDayHrlo", + "ctxKind": "function", + "ctxName": "serverStuff$", + "captures": false, + "loc": [ + 0, + 0 + ] +} +*/ +============================= test.tsx_Parent_component_serverLoader_k1L0DiPQV1I.js (ENTRY POINT)== + +export const s_k1L0DiPQV1I = null; + + +Some("{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\"}") +/* +{ + "origin": "test.tsx", + "name": "s_k1L0DiPQV1I", + "entry": null, + "displayName": "test.tsx_Parent_component_serverLoader", + "hash": "k1L0DiPQV1I", + "canonicalFilename": "test.tsx_Parent_component_serverLoader_k1L0DiPQV1I", + "path": "", + "extension": "js", + "parent": "s_0TaiDayHrlo", + "ctxKind": "function", + "ctxName": "serverLoader$", + "captures": false, + "loc": [ + 0, + 0 + ] +} +*/ ============================= test.tsx_Parent_component_useTask_gDH1EtUWqBU.js (ENTRY POINT)== import { _captures } from "@qwik.dev/core"; diff --git a/packages/qwik/src/optimizer/core/src/transform.rs b/packages/qwik/src/optimizer/core/src/transform.rs index 80d5ee35e2b..e2de0945041 100644 --- a/packages/qwik/src/optimizer/core/src/transform.rs +++ b/packages/qwik/src/optimizer/core/src/transform.rs @@ -2580,12 +2580,31 @@ impl<'a> QwikTransform<'a> { true } - // TODO export segment data for the noop qrl + // Noop segments are now added to the segments collection for manifest generation fn create_noop_qrl( &mut self, symbol_name: &swc_atoms::Atom, segment_data: SegmentData, ) -> ast::CallExpr { + // Add the noop segment to the segments collection for manifest generation + let canonical_filename = get_canonical_filename(&segment_data.display_name, symbol_name); + let param_names = None; // Noop segments don't have parameter names since they're not actual functions + + // Create a dummy expression for the noop segment + let dummy_expr = ast::Expr::Lit(ast::Lit::Null(ast::Null { span: DUMMY_SP })); + + // Add the segment to the collection with entry set to None to indicate it's a noop + self.segments.push(Segment { + entry: None, // Noop segments don't have an entry file + span: DUMMY_SP, + canonical_filename, + name: symbol_name.clone(), + data: segment_data.clone(), + expr: Box::new(dummy_expr), + hash: 0, // Noop segments don't need a hash since they're not actual code + param_names, + }); + let mut args = vec![ast::Expr::Lit(ast::Lit::Str(ast::Str { span: DUMMY_SP, value: symbol_name.clone(), diff --git a/packages/qwik/src/optimizer/src/plugins/plugin.ts b/packages/qwik/src/optimizer/src/plugins/plugin.ts index 3add4e61d96..da84ac351b2 100644 --- a/packages/qwik/src/optimizer/src/plugins/plugin.ts +++ b/packages/qwik/src/optimizer/src/plugins/plugin.ts @@ -819,7 +819,6 @@ export function createQwikPlugin(optimizerOptions: OptimizerOptions = {}) { } const deps = new Set(); for (const mod of newOutput.modules) { - // TODO handle noop modules if (mod !== module) { const key = normalizePath(path.join(srcDir, mod.path)); debug(`transform(${count})`, `segment ${key}`, mod.segment!.displayName); From 67a054a0638204b5179ad3885684a1c2ba70d96e Mon Sep 17 00:00:00 2001 From: Wout Mertens Date: Thu, 5 Mar 2026 14:30:36 +0100 Subject: [PATCH 11/11] wip still some issues - should replace it with empty function - should handle yes/no captures when adding true to noopQrl calls --- packages/qwik/src/core/shared/qrl/qrl.ts | 20 +++++---- .../src/core/shared/serdes/qrl-to-string.ts | 29 +++++++----- packages/qwik/src/optimizer/core/src/parse.rs | 8 ++++ ...__test__example_post_dce_noop_segment.snap | 3 +- .../qwik_core__test__noop_empty_body.snap | 45 ++++++++++++------- ...core__test__should_convert_jsx_events.snap | 15 +++---- ..._not_transform_events_on_non_elements.snap | 5 +-- ...orm_event_names_without_jsx_transpile.snap | 7 ++- packages/qwik/src/optimizer/core/src/test.rs | 7 ++- 9 files changed, 84 insertions(+), 55 deletions(-) diff --git a/packages/qwik/src/core/shared/qrl/qrl.ts b/packages/qwik/src/core/shared/qrl/qrl.ts index 2fbf54e0f6b..560b0270706 100644 --- a/packages/qwik/src/core/shared/qrl/qrl.ts +++ b/packages/qwik/src/core/shared/qrl/qrl.ts @@ -95,21 +95,25 @@ export const inlinedQrl = ( return createQRL(null, symbolName, symbol, null, lexicalScopeCapture); }; +const noopFn = () => {}; + /** @internal */ -export const _noopQrl = ( +export const _noopQrl = ( symbolName: string, - lexicalScopeCapture?: Readonly -): QRL => { - return createQRL(null, symbolName, null, null, lexicalScopeCapture); + lexicalScopeCapture?: Readonly | null, + isFn = false +): QRLInternal<() => void> => { + return createQRL(isFn ? '_' : null, symbolName, isFn ? noopFn : null, null, lexicalScopeCapture); }; /** @internal */ -export const _noopQrlDEV = ( +export const _noopQrlDEV = ( symbolName: string, opts: QRLDev, - lexicalScopeCapture?: Readonly -): QRL => { - const newQrl = _noopQrl(symbolName, lexicalScopeCapture) as QRLInternal; + lexicalScopeCapture?: Readonly | null, + isFn = false +): QRLInternal<() => void> => { + const newQrl = _noopQrl(symbolName, lexicalScopeCapture, isFn) as QRLInternal<() => void>; newQrl.dev = opts; return newQrl; }; diff --git a/packages/qwik/src/core/shared/serdes/qrl-to-string.ts b/packages/qwik/src/core/shared/serdes/qrl-to-string.ts index 1932d4f4de0..301898bc6e2 100644 --- a/packages/qwik/src/core/shared/serdes/qrl-to-string.ts +++ b/packages/qwik/src/core/shared/serdes/qrl-to-string.ts @@ -5,6 +5,7 @@ import { getPlatform } from '../platform/platform'; import { createQRL, type QRLInternal, type SyncQRLInternal } from '../qrl/qrl-class'; import { isSyncQrl } from '../qrl/qrl-utils'; import { assertDefined } from '../error/assert'; +import { _noopQrl } from '../qrl/qrl'; /** @internal */ export function qrlToString( @@ -25,22 +26,23 @@ export function qrlToString( let symbol = qrl.$symbol$; let chunk = qrl.$chunk$; - const platform = getPlatform(); - if (platform) { - const result = isDev - ? platform.chunkForSymbol(symbol, chunk, qrl.dev?.file) - : platform.chunkForSymbol(symbol, chunk); - if (result) { - chunk = result[1]; - symbol = result[0]; - } - } - const isSync = isSyncQrl(qrl); if (!isSync) { // If we have a symbol we need to resolve the chunk. if (!chunk) { - chunk = serializationContext.$symbolToChunkResolver$(qrl.$hash$); + const platform = getPlatform(); + if (platform) { + const result = isDev + ? platform.chunkForSymbol(symbol, chunk, qrl.dev?.file) + : platform.chunkForSymbol(symbol, chunk); + if (result) { + chunk = result[1]; + symbol = result[0]; + } + } + if (!chunk) { + chunk = serializationContext.$symbolToChunkResolver$(qrl.$hash$); + } } // in Dev mode we need to keep track of the symbols if (isDev) { @@ -96,6 +98,9 @@ export function createQRLWithBackChannel( qrlImporter = () => Promise.resolve({ [symbol]: fn }); } } + if (chunk === '_') { + return _noopQrl(symbol, captures as Readonly); + } return createQRL(chunk, symbol, null, qrlImporter, captures); } diff --git a/packages/qwik/src/optimizer/core/src/parse.rs b/packages/qwik/src/optimizer/core/src/parse.rs index ebed72c3255..c9989eab14a 100644 --- a/packages/qwik/src/optimizer/core/src/parse.rs +++ b/packages/qwik/src/optimizer/core/src/parse.rs @@ -1887,6 +1887,14 @@ fn replace_noop_qrl_calls( ident.ctxt = swc_common::SyntaxContext::empty(); } } + // Mark as empty-function replacement (as opposed to stripped segment) + call.args.push(ast::ExprOrSpread { + spread: None, + expr: Box::new(ast::Expr::Lit(ast::Lit::Bool(ast::Bool { + span: DUMMY_SP, + value: true, + }))), + }); self.did_replace = true; } } diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_post_dce_noop_segment.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_post_dce_noop_segment.snap index 64df9213196..b90d35ed11a 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_post_dce_noop_segment.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__example_post_dce_noop_segment.snap @@ -1,6 +1,5 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 2776 expression: output --- ==INPUT== @@ -59,7 +58,7 @@ export const s_ckEPmXZlub0 = ()=>{ // This task only runs on server; on client build it becomes empty after DCE useTaskQrl(/*#__PURE__*/ _noopQrl("s_0u2kaPEyYJA", [ state - ])); + ], true)); // This task has both server and client code; should NOT become noop useTaskQrl(/*#__PURE__*/ qrl(i_YeP1iz5iPN4, "s_YeP1iz5iPN4", [ state diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__noop_empty_body.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__noop_empty_body.snap index db3654631c5..58a8dd2c5cc 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__noop_empty_body.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__noop_empty_body.snap @@ -6,7 +6,7 @@ expression: output ==INPUT== - import { component$, isServer, $ } from "@qwik.dev/core"; + import { component$, isServer, $, inlinedQrl } from "@qwik.dev/core"; export const test1 = $(() => { if (isServer) { @@ -21,6 +21,11 @@ expression: output export const test4 = $(() => undefined); export const test5 = $(() => void 0); export const test5 = $(() => isServer ? 5 : undefined); + export const test6 = inlinedQrl(() => { + if (isServer) { + // no-op + } + }, '_test6'); ============================= test.tsx == @@ -28,37 +33,43 @@ import { _noopQrlDEV } from "@qwik.dev/core"; // export const test1 = /*#__PURE__*/ _noopQrlDEV("test1_ZUBkW4dA8WM", { file: "/user/qwik/src/test.tsx", - lo: 88, - hi: 136, + lo: 100, + hi: 148, displayName: "test.tsx_test1" -}); +}, true); export const test2 = /*#__PURE__*/ _noopQrlDEV("test2_nGoxYIFmFHk", { file: "/user/qwik/src/test.tsx", - lo: 164, - hi: 187, + lo: 176, + hi: 199, displayName: "test.tsx_test2" -}); +}, true); export const test3 = /*#__PURE__*/ _noopQrlDEV("test3_0B4I8rVZdZw", { file: "/user/qwik/src/test.tsx", - lo: 215, - hi: 231, + lo: 227, + hi: 243, displayName: "test.tsx_test3" -}); +}, true); export const test4 = /*#__PURE__*/ _noopQrlDEV("test4_lka0Opdt3Nk", { file: "/user/qwik/src/test.tsx", - lo: 259, - hi: 274, + lo: 271, + hi: 286, displayName: "test.tsx_test4" -}); +}, true); export const test5 = /*#__PURE__*/ _noopQrlDEV("test5_opUEX0KqODU", { file: "/user/qwik/src/test.tsx", - lo: 302, - hi: 314, + lo: 314, + hi: 326, displayName: "test.tsx_test5" -}); +}, true); +export const test6 = /*#__PURE__*/ _noopQrlDEV("_test6", { + file: "/user/qwik/src/test.tsx", + lo: 421, + hi: 469, + displayName: "test.tsx_" +}, true); -Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AAGE,OAAO,MAAM;;;;;GAIV;AACH,OAAO,MAAM;;;;;GAEV;AACH,OAAO,MAAM;;;;;GACV;AACH,OAAO,MAAM;;;;;GAA2B;AACxC,OAAO,MAAM;;;;;GAAwB\"}") +Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"mappings\":\";;AAGE,OAAO,MAAM;;;;;SAIV;AACH,OAAO,MAAM;;;;;SAEV;AACH,OAAO,MAAM;;;;;SACV;AACH,OAAO,MAAM;;;;;SAA2B;AACxC,OAAO,MAAM;;;;;SAAwB;AAErC,OAAO,MAAM;;;;;SAIA\"}") == DIAGNOSTICS == [] diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_jsx_events.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_jsx_events.snap index 450cb96d014..a2b47466442 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_jsx_events.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_convert_jsx_events.snap @@ -1,6 +1,5 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4743 expression: output --- ==INPUT== @@ -46,13 +45,13 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _noopQrl } from "@qwik.dev/core"; import { _jsxSorted } from "@qwik.dev/core"; // -const _qrl_ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs"); -const _qrl_ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0 = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0"); -const _qrl_ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY"); -const _qrl_ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA"); -const _qrl_ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg"); -const _qrl_ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles"); -const _qrl_ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs"); +const _qrl_ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_d_focus_fR03UCeyKSs", true); +const _qrl_ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0 = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_e_another_custom_ZC5Gt2v0qH0", true); +const _qrl_ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_e_blur_LVmlrV6TsTY", true); +const _qrl_ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_e_click_1_BOulU3QpiyA", true); +const _qrl_ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_e_click_z0X12CPQocg", true); +const _qrl_ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_e_dblclick_VZGqMEVFles", true); +const _qrl_ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs = /*#__PURE__*/ _noopQrl("ManyEventsComponent_component_div_button_q_w_click_DjpgJ0bcgJs", true); // export const ManyEventsComponent_component_ndbrzxiyG3g = ()=>{ return /*#__PURE__*/ _jsxSorted("div", null, null, [ diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_events_on_non_elements.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_events_on_non_elements.snap index 6fdfe5a351e..e7a2de992fe 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_events_on_non_elements.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_not_transform_events_on_non_elements.snap @@ -1,6 +1,5 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4807 expression: output --- ==INPUT== @@ -39,8 +38,8 @@ import { _noopQrl } from "@qwik.dev/core"; import { AnotherComponent } from "./another-component"; import { CustomComponent } from "./custom-component"; // -const _qrl_Greeter_component_div_AnotherComponent_onClick_9BwXJW3s0yA = /*#__PURE__*/ _noopQrl("Greeter_component_div_AnotherComponent_onClick_9BwXJW3s0yA"); -const _qrl_Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w = /*#__PURE__*/ _noopQrl("Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w"); +const _qrl_Greeter_component_div_AnotherComponent_onClick_9BwXJW3s0yA = /*#__PURE__*/ _noopQrl("Greeter_component_div_AnotherComponent_onClick_9BwXJW3s0yA", true); +const _qrl_Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w = /*#__PURE__*/ _noopQrl("Greeter_component_div_CustomComponent_onClick_6xTF8kMcS9w", true); // export const Greeter_component_n7HuG2hhU0Q = ()=>{ return
diff --git a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_event_names_without_jsx_transpile.snap b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_event_names_without_jsx_transpile.snap index ec1b3de06c0..fac217fe2dd 100644 --- a/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_event_names_without_jsx_transpile.snap +++ b/packages/qwik/src/optimizer/core/src/snapshots/qwik_core__test__should_transform_event_names_without_jsx_transpile.snap @@ -1,6 +1,5 @@ --- source: packages/qwik/src/optimizer/core/src/test.rs -assertion_line: 4778 expression: output --- ==INPUT== @@ -40,9 +39,9 @@ Some("{\"version\":3,\"sources\":[\"/user/qwik/src/test.tsx\"],\"names\":[],\"ma import { _noopQrl } from "@qwik.dev/core"; import mongo from "mongodb"; // -const _qrl_Greeter_component_div_div_q_e_click_1_s7p0zjWZpqo = /*#__PURE__*/ _noopQrl("Greeter_component_div_div_q_e_click_1_s7p0zjWZpqo"); -const _qrl_Greeter_component_div_div_q_e_click_2_B9tqzgApK9E = /*#__PURE__*/ _noopQrl("Greeter_component_div_div_q_e_click_2_B9tqzgApK9E"); -const _qrl_Greeter_component_div_div_q_e_click_wYSPnQEGCbA = /*#__PURE__*/ _noopQrl("Greeter_component_div_div_q_e_click_wYSPnQEGCbA"); +const _qrl_Greeter_component_div_div_q_e_click_1_s7p0zjWZpqo = /*#__PURE__*/ _noopQrl("Greeter_component_div_div_q_e_click_1_s7p0zjWZpqo", true); +const _qrl_Greeter_component_div_div_q_e_click_2_B9tqzgApK9E = /*#__PURE__*/ _noopQrl("Greeter_component_div_div_q_e_click_2_B9tqzgApK9E", true); +const _qrl_Greeter_component_div_div_q_e_click_wYSPnQEGCbA = /*#__PURE__*/ _noopQrl("Greeter_component_div_div_q_e_click_wYSPnQEGCbA", true); // export const Greeter_component_n7HuG2hhU0Q = ()=>{ // Double count watch diff --git a/packages/qwik/src/optimizer/core/src/test.rs b/packages/qwik/src/optimizer/core/src/test.rs index fd89fe8f2fc..750ef74a649 100644 --- a/packages/qwik/src/optimizer/core/src/test.rs +++ b/packages/qwik/src/optimizer/core/src/test.rs @@ -6240,7 +6240,7 @@ export const Test = component$(() => { fn noop_empty_body() { test_input!(TestInput { code: r#" - import { component$, isServer, $ } from "@qwik.dev/core"; + import { component$, isServer, $, inlinedQrl } from "@qwik.dev/core"; export const test1 = $(() => { if (isServer) { @@ -6255,6 +6255,11 @@ fn noop_empty_body() { export const test4 = $(() => undefined); export const test5 = $(() => void 0); export const test5 = $(() => isServer ? 5 : undefined); + export const test6 = inlinedQrl(() => { + if (isServer) { + // no-op + } + }, '_test6'); "# .to_string(), is_server: Some(false),