├── .editorconfig ├── .eslintignore ├── .eslintrc.cjs ├── .github ├── contributing.md └── workflows │ └── deploy.yml ├── .gitignore ├── .prettierignore ├── .prettierrc ├── .textlintrc.json ├── .vscode └── settings.json ├── README.md ├── book ├── images │ ├── 50-027-compiler-architecture.drawio.png │ ├── 50-027-new-compiler-architecture.drawio.png │ ├── c1c2map.drawio │ ├── c1c2map.png │ ├── c1c2map_deleted.drawio │ ├── c1c2map_deleted.png │ ├── c1c2map_inserted.drawio │ ├── c1c2map_inserted.png │ ├── c1c2map_inserted_correct.drawio │ ├── c1c2map_inserted_correct.png │ ├── collection_receiver_error.png │ ├── compile_directives.png │ ├── compile_sfc_render.png │ ├── complex_interpolation.png │ ├── design_with_transformer.drawio.png │ ├── dir_ast.drawio.png │ ├── element_to_string.png │ ├── focus_in_element.png │ ├── focus_in_reactive_html_element.png │ ├── fragment_error.png │ ├── hello_chibivue.png │ ├── hello_createApp.png │ ├── hyper-ultimate-super-extreme-minimal-vue.png │ ├── infer_component_types.png │ ├── load_virtual_css_module.png │ ├── load_virtual_css_module2.png │ ├── load_virtual_css_module3.png │ ├── logo │ │ ├── chibivue-img.png │ │ └── logo.png │ ├── me_template_compiler_design.drawio.png │ ├── minimum_example_artifacts.png │ ├── next_tick.png │ ├── non_scheduled_effect.png │ ├── old_state_dom.png │ ├── parse_interpolation.png │ ├── parse_sfc1.png │ ├── parse_sfc2.png │ ├── patch_bug.png │ ├── patch_rendering.png │ ├── props.png │ ├── proxy_get.png │ ├── proxy_set.png │ ├── reactive.drawio.png │ ├── reactive_example.png │ ├── reactive_example_mistake.png │ ├── reactive_html_element.png │ ├── reactive_observer.drawio │ ├── reactive_observer.png │ ├── reactivity_create.drawio.png │ ├── refactor_createApp.drawio.svg │ ├── refactor_createApp.png │ ├── refactor_createApp_createApp.drawio.svg │ ├── refactor_createApp_createApp.png │ ├── refactor_createApp_render.drawio.svg │ ├── refactor_createApp_render.png │ ├── render_interpolation.png │ ├── render_sfc.png │ ├── render_template.png │ ├── resolve_bindings_original.png │ ├── resolve_components.png │ ├── sample_vite_plugin_console.png │ ├── sample_vite_plugin_source.png │ ├── simple_h_function.png │ ├── simple_h_function_attr.png │ ├── simple_h_function_event.png │ ├── simple_template_compiler.png │ ├── simple_template_compiler2.png │ ├── simple_template_compiler_complex_html.png │ ├── state_is_not_defined.png │ ├── transform_vbind.drawio.png │ ├── v_for.png │ ├── v_for_ast.drawio.png │ ├── vbind_test.png │ ├── vif_fizzbuzz.png │ └── vite_error.png ├── impls │ ├── 00_introduction │ │ └── 010_project_setup │ │ │ ├── examples │ │ │ └── playground │ │ │ │ ├── .gitignore │ │ │ │ ├── index.html │ │ │ │ ├── package.json │ │ │ │ ├── src │ │ │ │ └── main.ts │ │ │ │ ├── tsconfig.json │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ └── index.ts │ │ │ ├── tests │ │ │ └── index.spec.ts │ │ │ └── tsconfig.json │ ├── 10_minimum_example │ │ ├── 010_create_app │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ └── index.ts │ │ │ ├── pnpm-lock.yaml │ │ │ ├── tests │ │ │ │ └── e2e.spec.ts │ │ │ └── tsconfig.json │ │ ├── 010_create_app2 │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── index.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── renderer.ts │ │ │ │ └── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ └── nodeOps.ts │ │ │ ├── tests │ │ │ │ └── e2e.spec.ts │ │ │ └── tsconfig.json │ │ ├── 020_simple_h_function │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── index.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ └── vnode.ts │ │ │ │ └── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ ├── attrs.ts │ │ │ │ │ └── events.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ ├── tests │ │ │ │ └── e2e.spec.ts │ │ │ └── tsconfig.json │ │ ├── 030_reactive_system │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── reactive.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ └── vnode.ts │ │ │ │ └── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ ├── attrs.ts │ │ │ │ │ └── events.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ ├── tests │ │ │ │ └── e2e.spec.ts │ │ │ └── tsconfig.json │ │ ├── 040_vdom_system │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── reactive.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ └── vnode.ts │ │ │ │ └── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ ├── attrs.ts │ │ │ │ │ └── events.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ ├── tests │ │ │ │ └── e2e.spec.ts │ │ │ └── tsconfig.json │ │ ├── 050_component_system │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── reactive.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ └── vnode.ts │ │ │ │ └── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ ├── attrs.ts │ │ │ │ │ └── events.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ ├── tests │ │ │ │ └── e2e.spec.ts │ │ │ └── tsconfig.json │ │ ├── 050_component_system2 │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── reactive.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ └── vnode.ts │ │ │ │ └── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ ├── attrs.ts │ │ │ │ │ └── events.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ ├── tests │ │ │ │ └── e2e.spec.ts │ │ │ └── tsconfig.json │ │ ├── 050_component_system3 │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── reactive.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ └── events.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ └── index.ts │ │ │ ├── tests │ │ │ │ └── e2e.spec.ts │ │ │ └── tsconfig.json │ │ ├── 060_template_compiler │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── reactive.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ └── events.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ └── index.ts │ │ │ ├── tests │ │ │ │ └── e2e.spec.ts │ │ │ └── tsconfig.json │ │ ├── 060_template_compiler2 │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── reactive.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ └── events.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ └── index.ts │ │ │ ├── tests │ │ │ │ └── e2e.spec.ts │ │ │ └── tsconfig.json │ │ ├── 060_template_compiler3 │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── reactive.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ └── events.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ └── index.ts │ │ │ └── tsconfig.json │ │ ├── 070_sfc_compiler │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── reactive.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ └── events.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ └── index.ts │ │ │ ├── plugin-sample │ │ │ │ ├── .gitignore │ │ │ │ ├── .vscode │ │ │ │ │ └── extensions.json │ │ │ │ ├── README.md │ │ │ │ ├── index.html │ │ │ │ ├── package.json │ │ │ │ ├── pnpm-lock.yaml │ │ │ │ ├── public │ │ │ │ │ └── vite.svg │ │ │ │ ├── src │ │ │ │ │ ├── App.vue │ │ │ │ │ ├── assets │ │ │ │ │ │ └── vue.svg │ │ │ │ │ ├── components │ │ │ │ │ │ └── HelloWorld.vue │ │ │ │ │ ├── main.ts │ │ │ │ │ ├── plugin.sample.js │ │ │ │ │ ├── style.css │ │ │ │ │ └── vite-env.d.ts │ │ │ │ ├── tsconfig.json │ │ │ │ ├── tsconfig.node.json │ │ │ │ └── vite.config.ts │ │ │ └── tsconfig.json │ │ ├── 070_sfc_compiler2 │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ ├── App.vue │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── reactive.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ └── events.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ └── index.ts │ │ │ └── tsconfig.json │ │ ├── 070_sfc_compiler3 │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ ├── App.vue │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── reactive.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ └── events.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ └── index.ts │ │ │ └── tsconfig.json │ │ └── 070_sfc_compiler4 │ │ │ ├── examples │ │ │ └── playground │ │ │ │ ├── .gitignore │ │ │ │ ├── index.html │ │ │ │ ├── package.json │ │ │ │ ├── src │ │ │ │ ├── App.vue │ │ │ │ └── main.ts │ │ │ │ ├── tsconfig.json │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ ├── @extensions │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ └── index.ts │ │ │ ├── compiler-core │ │ │ │ ├── ast.ts │ │ │ │ ├── codegen.ts │ │ │ │ ├── compile.ts │ │ │ │ ├── index.ts │ │ │ │ ├── options.ts │ │ │ │ └── parse.ts │ │ │ ├── compiler-dom │ │ │ │ └── index.ts │ │ │ ├── compiler-sfc │ │ │ │ ├── compileTemplate.ts │ │ │ │ ├── index.ts │ │ │ │ ├── parse.ts │ │ │ │ └── rewriteDefault.ts │ │ │ ├── index.ts │ │ │ ├── reactivity │ │ │ │ ├── baseHandler.ts │ │ │ │ ├── dep.ts │ │ │ │ ├── effect.ts │ │ │ │ ├── index.ts │ │ │ │ └── reactive.ts │ │ │ ├── runtime-core │ │ │ │ ├── apiCreateApp.ts │ │ │ │ ├── component.ts │ │ │ │ ├── componentEmits.ts │ │ │ │ ├── componentOptions.ts │ │ │ │ ├── componentProps.ts │ │ │ │ ├── h.ts │ │ │ │ ├── index.ts │ │ │ │ ├── renderer.ts │ │ │ │ └── vnode.ts │ │ │ ├── runtime-dom │ │ │ │ ├── index.ts │ │ │ │ ├── modules │ │ │ │ │ ├── attrs.ts │ │ │ │ │ └── events.ts │ │ │ │ ├── nodeOps.ts │ │ │ │ └── patchProp.ts │ │ │ └── shared │ │ │ │ ├── general.ts │ │ │ │ └── index.ts │ │ │ └── tsconfig.json │ ├── 20_basic_virtual_dom │ │ ├── 010_patch_keyed_children │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── reactive.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ └── events.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ └── index.ts │ │ │ └── tsconfig.json │ │ ├── 020_bit_flags │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── reactive.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ └── events.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── shapeFlags.ts │ │ │ └── tsconfig.json │ │ ├── 040_scheduler │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── reactive.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ └── events.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── shapeFlags.ts │ │ │ └── tsconfig.json │ │ ├── 050_next_tick │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── reactive.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ └── events.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── shapeFlags.ts │ │ │ └── tsconfig.json │ │ └── 060_other_props │ │ │ ├── examples │ │ │ └── playground │ │ │ │ ├── .gitignore │ │ │ │ ├── index.html │ │ │ │ ├── package.json │ │ │ │ ├── src │ │ │ │ └── main.ts │ │ │ │ ├── tsconfig.json │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ ├── @extensions │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ └── index.ts │ │ │ ├── compiler-core │ │ │ │ ├── ast.ts │ │ │ │ ├── codegen.ts │ │ │ │ ├── compile.ts │ │ │ │ ├── index.ts │ │ │ │ ├── options.ts │ │ │ │ └── parse.ts │ │ │ ├── compiler-dom │ │ │ │ └── index.ts │ │ │ ├── compiler-sfc │ │ │ │ ├── compileTemplate.ts │ │ │ │ ├── index.ts │ │ │ │ ├── parse.ts │ │ │ │ └── rewriteDefault.ts │ │ │ ├── index.ts │ │ │ ├── reactivity │ │ │ │ ├── baseHandler.ts │ │ │ │ ├── dep.ts │ │ │ │ ├── effect.ts │ │ │ │ ├── index.ts │ │ │ │ └── reactive.ts │ │ │ ├── runtime-core │ │ │ │ ├── apiCreateApp.ts │ │ │ │ ├── component.ts │ │ │ │ ├── componentEmits.ts │ │ │ │ ├── componentOptions.ts │ │ │ │ ├── componentProps.ts │ │ │ │ ├── h.ts │ │ │ │ ├── index.ts │ │ │ │ ├── renderer.ts │ │ │ │ ├── scheduler.ts │ │ │ │ └── vnode.ts │ │ │ ├── runtime-dom │ │ │ │ ├── index.ts │ │ │ │ ├── modules │ │ │ │ │ ├── attrs.ts │ │ │ │ │ ├── class.ts │ │ │ │ │ ├── events.ts │ │ │ │ │ ├── props.ts │ │ │ │ │ └── style.ts │ │ │ │ ├── nodeOps.ts │ │ │ │ └── patchProp.ts │ │ │ └── shared │ │ │ │ ├── general.ts │ │ │ │ ├── index.ts │ │ │ │ └── shapeFlags.ts │ │ │ └── tsconfig.json │ ├── 30_basic_reactivity_system │ │ ├── 010_ref │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ ├── App.vue │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── shapeFlags.ts │ │ │ └── tsconfig.json │ │ ├── 020_shallow_ref │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ ├── App.vue │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── shapeFlags.ts │ │ │ └── tsconfig.json │ │ ├── 030_to_ref │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ ├── App.vue │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 040_to_refs │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ ├── App.vue │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 050_computed │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ ├── App.vue │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 060_computed_setter │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ ├── App.vue │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 070_watch │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ ├── App.vue │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 080_watch_api_extends │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ ├── App.vue │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 090_watch_effect │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ ├── App.vue │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 100_reactive_proxy_target_type │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ ├── App.vue │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 110_template_refs │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ ├── App.vue │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 120_proxy_handler_improvement │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ ├── App.vue │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 130_cleanup_effects │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 140_effect_scope │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── effectScope.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ └── 150_other_apis │ │ │ ├── examples │ │ │ └── playground │ │ │ │ ├── .gitignore │ │ │ │ ├── index.html │ │ │ │ ├── package.json │ │ │ │ ├── src │ │ │ │ └── main.ts │ │ │ │ ├── tsconfig.json │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ ├── @extensions │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ └── index.ts │ │ │ ├── compiler-core │ │ │ │ ├── ast.ts │ │ │ │ ├── codegen.ts │ │ │ │ ├── compile.ts │ │ │ │ ├── index.ts │ │ │ │ ├── options.ts │ │ │ │ └── parse.ts │ │ │ ├── compiler-dom │ │ │ │ └── index.ts │ │ │ ├── compiler-sfc │ │ │ │ ├── compileTemplate.ts │ │ │ │ ├── index.ts │ │ │ │ ├── parse.ts │ │ │ │ └── rewriteDefault.ts │ │ │ ├── index.ts │ │ │ ├── reactivity │ │ │ │ ├── baseHandler.ts │ │ │ │ ├── collectionHandlers.ts │ │ │ │ ├── computed.ts │ │ │ │ ├── dep.ts │ │ │ │ ├── effect.ts │ │ │ │ ├── effectScope.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactive.ts │ │ │ │ └── ref.ts │ │ │ ├── runtime-core │ │ │ │ ├── apiCreateApp.ts │ │ │ │ ├── apiWatch.ts │ │ │ │ ├── component.ts │ │ │ │ ├── componentEmits.ts │ │ │ │ ├── componentOptions.ts │ │ │ │ ├── componentProps.ts │ │ │ │ ├── h.ts │ │ │ │ ├── index.ts │ │ │ │ ├── renderer.ts │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ ├── scheduler.ts │ │ │ │ └── vnode.ts │ │ │ ├── runtime-dom │ │ │ │ ├── index.ts │ │ │ │ ├── modules │ │ │ │ │ ├── attrs.ts │ │ │ │ │ ├── class.ts │ │ │ │ │ ├── events.ts │ │ │ │ │ ├── props.ts │ │ │ │ │ └── style.ts │ │ │ │ ├── nodeOps.ts │ │ │ │ └── patchProp.ts │ │ │ └── shared │ │ │ │ ├── general.ts │ │ │ │ ├── index.ts │ │ │ │ ├── shapeFlags.ts │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ ├── 40_basic_component_system │ │ ├── 010_lifecycle_hooks │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── effectScope.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiLifecycle.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── enums.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 020_provide_inject │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── effectScope.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiInject.ts │ │ │ │ │ ├── apiLifecycle.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── enums.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 030_component_proxy │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── effectScope.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiDefineComponent.ts │ │ │ │ │ ├── apiInject.ts │ │ │ │ │ ├── apiLifecycle.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── componentPublicInstance.ts │ │ │ │ │ ├── enums.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 040_setup_context │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── effectScope.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiDefineComponent.ts │ │ │ │ │ ├── apiInject.ts │ │ │ │ │ ├── apiLifecycle.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── componentPublicInstance.ts │ │ │ │ │ ├── enums.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 050_component_slot │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── effectScope.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiDefineComponent.ts │ │ │ │ │ ├── apiInject.ts │ │ │ │ │ ├── apiLifecycle.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── componentPublicInstance.ts │ │ │ │ │ ├── componentSlots.ts │ │ │ │ │ ├── enums.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 060_slot_extend │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ └── parse.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── effectScope.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiDefineComponent.ts │ │ │ │ │ ├── apiInject.ts │ │ │ │ │ ├── apiLifecycle.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── componentPublicInstance.ts │ │ │ │ │ ├── componentSlots.ts │ │ │ │ │ ├── enums.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ └── 070_options_api │ │ │ ├── examples │ │ │ └── playground │ │ │ │ ├── .gitignore │ │ │ │ ├── index.html │ │ │ │ ├── package.json │ │ │ │ ├── src │ │ │ │ └── main.ts │ │ │ │ ├── tsconfig.json │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ ├── @extensions │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ └── index.ts │ │ │ ├── compiler-core │ │ │ │ ├── ast.ts │ │ │ │ ├── codegen.ts │ │ │ │ ├── compile.ts │ │ │ │ ├── index.ts │ │ │ │ ├── options.ts │ │ │ │ └── parse.ts │ │ │ ├── compiler-dom │ │ │ │ └── index.ts │ │ │ ├── compiler-sfc │ │ │ │ ├── compileTemplate.ts │ │ │ │ ├── index.ts │ │ │ │ ├── parse.ts │ │ │ │ └── rewriteDefault.ts │ │ │ ├── index.ts │ │ │ ├── reactivity │ │ │ │ ├── baseHandler.ts │ │ │ │ ├── collectionHandlers.ts │ │ │ │ ├── computed.ts │ │ │ │ ├── dep.ts │ │ │ │ ├── effect.ts │ │ │ │ ├── effectScope.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactive.ts │ │ │ │ └── ref.ts │ │ │ ├── runtime-core │ │ │ │ ├── apiCreateApp.ts │ │ │ │ ├── apiDefineComponent.ts │ │ │ │ ├── apiInject.ts │ │ │ │ ├── apiLifecycle.ts │ │ │ │ ├── apiWatch.ts │ │ │ │ ├── component.ts │ │ │ │ ├── componentEmits.ts │ │ │ │ ├── componentOptions.ts │ │ │ │ ├── componentProps.ts │ │ │ │ ├── componentPublicInstance.ts │ │ │ │ ├── componentSlots.ts │ │ │ │ ├── enums.ts │ │ │ │ ├── h.ts │ │ │ │ ├── index.ts │ │ │ │ ├── renderer.ts │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ ├── scheduler.ts │ │ │ │ └── vnode.ts │ │ │ ├── runtime-dom │ │ │ │ ├── index.ts │ │ │ │ ├── modules │ │ │ │ │ ├── attrs.ts │ │ │ │ │ ├── class.ts │ │ │ │ │ ├── events.ts │ │ │ │ │ ├── props.ts │ │ │ │ │ └── style.ts │ │ │ │ ├── nodeOps.ts │ │ │ │ └── patchProp.ts │ │ │ └── shared │ │ │ │ ├── general.ts │ │ │ │ ├── index.ts │ │ │ │ ├── shapeFlags.ts │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ ├── 50_basic_template_compiler │ │ ├── 010_transformer │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ ├── transform.ts │ │ │ │ │ └── transforms │ │ │ │ │ │ └── transformElement.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── effectScope.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiDefineComponent.ts │ │ │ │ │ ├── apiInject.ts │ │ │ │ │ ├── apiLifecycle.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── componentPublicInstance.ts │ │ │ │ │ ├── componentSlots.ts │ │ │ │ │ ├── enums.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 020_v_bind │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ ├── transform.ts │ │ │ │ │ ├── transforms │ │ │ │ │ │ ├── transformElement.ts │ │ │ │ │ │ └── vBind.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── effectScope.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiDefineComponent.ts │ │ │ │ │ ├── apiInject.ts │ │ │ │ │ ├── apiLifecycle.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── componentPublicInstance.ts │ │ │ │ │ ├── componentSlots.ts │ │ │ │ │ ├── enums.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── normalizeProp.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 022_transform_expression │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ ├── App.vue │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── babelUtils.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ ├── transform.ts │ │ │ │ │ ├── transforms │ │ │ │ │ │ ├── transformElement.ts │ │ │ │ │ │ ├── transformExpression.ts │ │ │ │ │ │ └── vBind.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── effectScope.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiDefineComponent.ts │ │ │ │ │ ├── apiInject.ts │ │ │ │ │ ├── apiLifecycle.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── componentPublicInstance.ts │ │ │ │ │ ├── componentSlots.ts │ │ │ │ │ ├── enums.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── makeMap.ts │ │ │ │ │ ├── normalizeProp.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 025_v_on │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── babelUtils.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ ├── runtimeHelpers.ts │ │ │ │ │ ├── transform.ts │ │ │ │ │ ├── transforms │ │ │ │ │ │ ├── transformElement.ts │ │ │ │ │ │ ├── transformExpression.ts │ │ │ │ │ │ ├── vBind.ts │ │ │ │ │ │ └── vOn.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── effectScope.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiDefineComponent.ts │ │ │ │ │ ├── apiInject.ts │ │ │ │ │ ├── apiLifecycle.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── componentPublicInstance.ts │ │ │ │ │ ├── componentSlots.ts │ │ │ │ │ ├── enums.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── helpers │ │ │ │ │ │ └── toHandlers.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ └── patchProp.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── makeMap.ts │ │ │ │ │ ├── normalizeProp.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 027_event_modifier │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── pnpm-lock.yaml │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── babelUtils.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ ├── runtimeHelpers.ts │ │ │ │ │ ├── transform.ts │ │ │ │ │ ├── transforms │ │ │ │ │ │ ├── transformElement.ts │ │ │ │ │ │ ├── transformExpression.ts │ │ │ │ │ │ ├── vBind.ts │ │ │ │ │ │ └── vOn.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ └── transforms │ │ │ │ │ │ └── vOn.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── effectScope.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiDefineComponent.ts │ │ │ │ │ ├── apiInject.ts │ │ │ │ │ ├── apiLifecycle.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── componentPublicInstance.ts │ │ │ │ │ ├── componentSlots.ts │ │ │ │ │ ├── enums.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── helpers │ │ │ │ │ │ └── toHandlers.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── directives │ │ │ │ │ │ └── vOn.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ ├── patchProp.ts │ │ │ │ │ └── runtimeHelpers.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── makeMap.ts │ │ │ │ │ ├── normalizeProp.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 027_event_modifier2 │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── babelUtils.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ ├── runtimeHelpers.ts │ │ │ │ │ ├── transform.ts │ │ │ │ │ ├── transforms │ │ │ │ │ │ ├── transformElement.ts │ │ │ │ │ │ ├── transformExpression.ts │ │ │ │ │ │ ├── vBind.ts │ │ │ │ │ │ └── vOn.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ └── transforms │ │ │ │ │ │ └── vOn.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── effectScope.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiDefineComponent.ts │ │ │ │ │ ├── apiInject.ts │ │ │ │ │ ├── apiLifecycle.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── componentPublicInstance.ts │ │ │ │ │ ├── componentSlots.ts │ │ │ │ │ ├── enums.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── helpers │ │ │ │ │ │ └── toHandlers.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── directives │ │ │ │ │ │ └── vOn.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ ├── patchProp.ts │ │ │ │ │ └── runtimeHelpers.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── makeMap.ts │ │ │ │ │ ├── normalizeProp.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 030_fragment │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── babelUtils.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ ├── runtimeHelpers.ts │ │ │ │ │ ├── transform.ts │ │ │ │ │ ├── transforms │ │ │ │ │ │ ├── transformElement.ts │ │ │ │ │ │ ├── transformExpression.ts │ │ │ │ │ │ ├── vBind.ts │ │ │ │ │ │ └── vOn.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ └── transforms │ │ │ │ │ │ └── vOn.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── effectScope.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiDefineComponent.ts │ │ │ │ │ ├── apiInject.ts │ │ │ │ │ ├── apiLifecycle.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── componentPublicInstance.ts │ │ │ │ │ ├── componentSlots.ts │ │ │ │ │ ├── enums.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── helpers │ │ │ │ │ │ └── toHandlers.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── directives │ │ │ │ │ │ └── vOn.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ ├── patchProp.ts │ │ │ │ │ └── runtimeHelpers.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── makeMap.ts │ │ │ │ │ ├── normalizeProp.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 035_comment │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── babelUtils.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ ├── runtimeHelpers.ts │ │ │ │ │ ├── transform.ts │ │ │ │ │ ├── transforms │ │ │ │ │ │ ├── transformElement.ts │ │ │ │ │ │ ├── transformExpression.ts │ │ │ │ │ │ ├── vBind.ts │ │ │ │ │ │ └── vOn.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ └── transforms │ │ │ │ │ │ └── vOn.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── effectScope.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiDefineComponent.ts │ │ │ │ │ ├── apiInject.ts │ │ │ │ │ ├── apiLifecycle.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── componentPublicInstance.ts │ │ │ │ │ ├── componentSlots.ts │ │ │ │ │ ├── enums.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── helpers │ │ │ │ │ │ └── toHandlers.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── directives │ │ │ │ │ │ └── vOn.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ ├── patchProp.ts │ │ │ │ │ └── runtimeHelpers.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── makeMap.ts │ │ │ │ │ ├── normalizeProp.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 040_v_if_and_structural_directive │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── babelUtils.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ ├── runtimeHelpers.ts │ │ │ │ │ ├── transform.ts │ │ │ │ │ ├── transforms │ │ │ │ │ │ ├── transformElement.ts │ │ │ │ │ │ ├── transformExpression.ts │ │ │ │ │ │ ├── vBind.ts │ │ │ │ │ │ ├── vIf.ts │ │ │ │ │ │ └── vOn.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ └── transforms │ │ │ │ │ │ └── vOn.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── effectScope.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiDefineComponent.ts │ │ │ │ │ ├── apiInject.ts │ │ │ │ │ ├── apiLifecycle.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── componentPublicInstance.ts │ │ │ │ │ ├── componentSlots.ts │ │ │ │ │ ├── enums.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── helpers │ │ │ │ │ │ └── toHandlers.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── directives │ │ │ │ │ │ └── vOn.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ ├── patchProp.ts │ │ │ │ │ └── runtimeHelpers.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── makeMap.ts │ │ │ │ │ ├── normalizeProp.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ ├── 050_v_for │ │ │ ├── examples │ │ │ │ └── playground │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── index.html │ │ │ │ │ ├── package.json │ │ │ │ │ ├── src │ │ │ │ │ ├── App.vue │ │ │ │ │ └── main.ts │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ └── vite.config.js │ │ │ ├── package.json │ │ │ ├── packages │ │ │ │ ├── @extensions │ │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ │ └── index.ts │ │ │ │ ├── compiler-core │ │ │ │ │ ├── ast.ts │ │ │ │ │ ├── babelUtils.ts │ │ │ │ │ ├── codegen.ts │ │ │ │ │ ├── compile.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── options.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ ├── runtimeHelpers.ts │ │ │ │ │ ├── transform.ts │ │ │ │ │ ├── transforms │ │ │ │ │ │ ├── transformElement.ts │ │ │ │ │ │ ├── transformExpression.ts │ │ │ │ │ │ ├── vBind.ts │ │ │ │ │ │ ├── vFor.ts │ │ │ │ │ │ ├── vIf.ts │ │ │ │ │ │ └── vOn.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── compiler-dom │ │ │ │ │ ├── index.ts │ │ │ │ │ └── transforms │ │ │ │ │ │ └── vOn.ts │ │ │ │ ├── compiler-sfc │ │ │ │ │ ├── compileTemplate.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── parse.ts │ │ │ │ │ └── rewriteDefault.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactivity │ │ │ │ │ ├── baseHandler.ts │ │ │ │ │ ├── collectionHandlers.ts │ │ │ │ │ ├── computed.ts │ │ │ │ │ ├── dep.ts │ │ │ │ │ ├── effect.ts │ │ │ │ │ ├── effectScope.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── reactive.ts │ │ │ │ │ └── ref.ts │ │ │ │ ├── runtime-core │ │ │ │ │ ├── apiCreateApp.ts │ │ │ │ │ ├── apiDefineComponent.ts │ │ │ │ │ ├── apiInject.ts │ │ │ │ │ ├── apiLifecycle.ts │ │ │ │ │ ├── apiWatch.ts │ │ │ │ │ ├── component.ts │ │ │ │ │ ├── componentEmits.ts │ │ │ │ │ ├── componentOptions.ts │ │ │ │ │ ├── componentProps.ts │ │ │ │ │ ├── componentPublicInstance.ts │ │ │ │ │ ├── componentSlots.ts │ │ │ │ │ ├── enums.ts │ │ │ │ │ ├── h.ts │ │ │ │ │ ├── helpers │ │ │ │ │ │ ├── renderList.ts │ │ │ │ │ │ └── toHandlers.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── renderer.ts │ │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ │ ├── scheduler.ts │ │ │ │ │ └── vnode.ts │ │ │ │ ├── runtime-dom │ │ │ │ │ ├── directives │ │ │ │ │ │ └── vOn.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── attrs.ts │ │ │ │ │ │ ├── class.ts │ │ │ │ │ │ ├── events.ts │ │ │ │ │ │ ├── props.ts │ │ │ │ │ │ └── style.ts │ │ │ │ │ ├── nodeOps.ts │ │ │ │ │ ├── patchProp.ts │ │ │ │ │ └── runtimeHelpers.ts │ │ │ │ └── shared │ │ │ │ │ ├── general.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── makeMap.ts │ │ │ │ │ ├── normalizeProp.ts │ │ │ │ │ ├── shapeFlags.ts │ │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ │ └── 060_resolve_components │ │ │ ├── examples │ │ │ └── playground │ │ │ │ ├── .gitignore │ │ │ │ ├── index.html │ │ │ │ ├── package.json │ │ │ │ ├── src │ │ │ │ ├── App.vue │ │ │ │ ├── components │ │ │ │ │ └── Counter.vue │ │ │ │ └── main.ts │ │ │ │ ├── tsconfig.json │ │ │ │ └── vite.config.ts │ │ │ ├── package.json │ │ │ ├── packages │ │ │ ├── @extensions │ │ │ │ └── vite-plugin-chibivue │ │ │ │ │ └── index.ts │ │ │ ├── compiler-core │ │ │ │ ├── ast.ts │ │ │ │ ├── babelUtils.ts │ │ │ │ ├── codegen.ts │ │ │ │ ├── compile.ts │ │ │ │ ├── index.ts │ │ │ │ ├── options.ts │ │ │ │ ├── parse.ts │ │ │ │ ├── runtimeHelpers.ts │ │ │ │ ├── transform.ts │ │ │ │ ├── transforms │ │ │ │ │ ├── transformElement.ts │ │ │ │ │ ├── transformExpression.ts │ │ │ │ │ ├── vBind.ts │ │ │ │ │ ├── vFor.ts │ │ │ │ │ ├── vIf.ts │ │ │ │ │ └── vOn.ts │ │ │ │ └── utils.ts │ │ │ ├── compiler-dom │ │ │ │ ├── index.ts │ │ │ │ ├── parserOptions.ts │ │ │ │ └── transforms │ │ │ │ │ └── vOn.ts │ │ │ ├── compiler-sfc │ │ │ │ ├── compileTemplate.ts │ │ │ │ ├── index.ts │ │ │ │ ├── parse.ts │ │ │ │ └── rewriteDefault.ts │ │ │ ├── index.ts │ │ │ ├── reactivity │ │ │ │ ├── baseHandler.ts │ │ │ │ ├── collectionHandlers.ts │ │ │ │ ├── computed.ts │ │ │ │ ├── dep.ts │ │ │ │ ├── effect.ts │ │ │ │ ├── effectScope.ts │ │ │ │ ├── index.ts │ │ │ │ ├── reactive.ts │ │ │ │ └── ref.ts │ │ │ ├── runtime-core │ │ │ │ ├── apiCreateApp.ts │ │ │ │ ├── apiDefineComponent.ts │ │ │ │ ├── apiInject.ts │ │ │ │ ├── apiLifecycle.ts │ │ │ │ ├── apiWatch.ts │ │ │ │ ├── component.ts │ │ │ │ ├── componentEmits.ts │ │ │ │ ├── componentOptions.ts │ │ │ │ ├── componentProps.ts │ │ │ │ ├── componentPublicInstance.ts │ │ │ │ ├── componentRenderContext.ts │ │ │ │ ├── componentSlots.ts │ │ │ │ ├── enums.ts │ │ │ │ ├── h.ts │ │ │ │ ├── helpers │ │ │ │ │ ├── renderList.ts │ │ │ │ │ ├── resolveAssets.ts │ │ │ │ │ └── toHandlers.ts │ │ │ │ ├── index.ts │ │ │ │ ├── renderer.ts │ │ │ │ ├── rendererTemplateRef.ts │ │ │ │ ├── scheduler.ts │ │ │ │ └── vnode.ts │ │ │ ├── runtime-dom │ │ │ │ ├── directives │ │ │ │ │ └── vOn.ts │ │ │ │ ├── index.ts │ │ │ │ ├── modules │ │ │ │ │ ├── attrs.ts │ │ │ │ │ ├── class.ts │ │ │ │ │ ├── events.ts │ │ │ │ │ ├── props.ts │ │ │ │ │ └── style.ts │ │ │ │ ├── nodeOps.ts │ │ │ │ ├── patchProp.ts │ │ │ │ └── runtimeHelpers.ts │ │ │ └── shared │ │ │ │ ├── domTagConfig.ts │ │ │ │ ├── general.ts │ │ │ │ ├── index.ts │ │ │ │ ├── makeMap.ts │ │ │ │ ├── normalizeProp.ts │ │ │ │ ├── shapeFlags.ts │ │ │ │ └── typeUtils.ts │ │ │ └── tsconfig.json │ ├── 60_basic_sfc_compiler │ │ └── .gitkeep │ └── bonus │ │ └── hyper-ultimate-super-extreme-minimal-vue │ │ ├── examples │ │ └── playground │ │ │ ├── .gitignore │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── pnpm-lock.yaml │ │ │ ├── src │ │ │ ├── App.vue │ │ │ └── main.ts │ │ │ ├── tsconfig.json │ │ │ └── vite.config.ts │ │ ├── package.json │ │ ├── packages │ │ └── index.ts │ │ └── tsconfig.json └── online-book │ ├── .vitepress │ ├── config │ │ ├── index.ts │ │ ├── shared.ts │ │ └── zh-cn.ts │ └── theme │ │ ├── index.ts │ │ └── main.css │ └── src │ ├── 00-introduction │ ├── 010-about.md │ ├── 020-what-is-vue.md │ ├── 030-vue-core-components.md │ └── 040-setup-project.md │ ├── 10-minimum-example │ ├── 010-create-app-api.md │ ├── 015-package-architecture.md │ ├── 020-simple-h-function.md │ ├── 025-event-handler-and-attrs.md │ ├── 030-minimum-reactive.md │ ├── 030-prerequisite-knowledge-for-the-reactivity-system.md │ ├── 035-try-implementing-a-minimum-reactivity-system.md │ ├── 040-minimum-virtual-dom.md │ ├── 050-minimum-component.md │ ├── 051-component-props.md │ ├── 052-component-emits.md │ ├── 060-minimum-template-compiler.md │ ├── 060-template-compiler.md │ ├── 061-template-compiler-impl.md │ ├── 070-more-complex-parser.md │ ├── 080-template-binding.md │ ├── 090-minimum-sfc.md │ ├── 090-prerequisite-knowledge-for-the-sfc.md │ ├── 091-parse-sfc.md │ ├── 092-compile-sfc-template.md │ ├── 093-compile-sfc-script.md │ ├── 094-compile-sfc-style.md │ └── 100-break.md │ ├── 20-basic-virtual-dom │ ├── 010-patch-keyed-children.md │ ├── 020-bit-flags.md │ ├── 030-scheduler.md │ └── 040-patch-other-attrs.md │ ├── 30-basic-reactivity-system │ ├── 005-reactivity-optimization.md │ ├── 010-ref-api.md │ ├── 020-computed-watch.md │ ├── 030-reactive-proxy-handlers.md │ ├── 040-effect-scope.md │ └── 050-other-apis.md │ ├── 40-basic-component-system │ ├── 010-lifecycle-hooks.md │ ├── 020-provide-inject.md │ ├── 030-component-proxy-setup-context.md │ ├── 040-component-slot.md │ └── 050-options-api.md │ ├── 50-basic-template-compiler │ ├── 010-transform.md │ ├── 020-v-bind.md │ ├── 022-transform-expression.md │ ├── 025-v-on.md │ ├── 027-event-modifier.md │ ├── 030-fragment.md │ ├── 035-comment.md │ ├── 040-v-if-and-structural-directive.md │ ├── 050-v-for.md │ ├── 070-resolve-component.md │ ├── 080-component-slot-outlet.md │ ├── 080-slot.md │ ├── 090-other-directives.md │ ├── 100-chore-compiler.md │ └── 500-custom-directive.md │ ├── 60-basic-sfc-compiler │ ├── 010-script-setup.md │ ├── 020-define-props.md │ ├── 030-define-emits.md │ └── 040-scoped-css.md │ ├── 90-web-application-essentials │ ├── 010-plugins │ │ ├── 010-router.md │ │ └── 020-preprocessors.md │ ├── 020-ssr │ │ ├── 010-create-ssr-app.md │ │ └── 020-hydration.md │ ├── 030-builtins │ │ ├── 010-keep-alive.md │ │ ├── 020-suspense.md │ │ └── 030-transition.md │ └── 040-optimizations │ │ ├── 010-static-hoisting.md │ │ ├── 020-patch-flags.md │ │ └── 030-tree-flattening.md │ ├── bonus │ ├── debug-vuejs-core.md │ └── hyper-ultimate-super-extreme-minimal-vue │ │ ├── 15-min-impl.md │ │ └── index.md │ ├── index.md │ ├── plan │ └── milestones.md │ └── public │ ├── chibivue-img.png │ ├── logo.png │ └── ubugeeei.jpg ├── build.ts ├── changelog.config.cjs ├── examples ├── app │ ├── index.html │ ├── package.json │ ├── src │ │ ├── App.vue │ │ ├── components │ │ │ ├── CompilerMacroDemo.vue │ │ │ ├── SimpleBtn.vue │ │ │ └── SimpleCard.vue │ │ ├── main.ts │ │ ├── router.ts │ │ ├── store │ │ │ └── count.store.ts │ │ └── views │ │ │ ├── compiler-macro.vue │ │ │ ├── directive.vue │ │ │ ├── index.vue │ │ │ ├── inline.ts │ │ │ ├── options-api.vue │ │ │ ├── props-emits.vue │ │ │ ├── state.vue │ │ │ ├── store-counter.vue │ │ │ └── todo-list.vue │ └── vite.config.ts └── vapor │ ├── index.html │ ├── package.json │ ├── src │ ├── App.vue │ ├── Counter.vue │ ├── MyComponent.vapor.ts │ └── main.ts │ └── vite.config.ts ├── package.json ├── packages ├── @extensions │ ├── chibivue-router │ │ ├── package.json │ │ └── src │ │ │ ├── RouterView.ts │ │ │ ├── history.ts │ │ │ ├── index.ts │ │ │ ├── injectionSymbols.ts │ │ │ ├── router.ts │ │ │ ├── types │ │ │ └── index.ts │ │ │ └── useApi.ts │ ├── chibivue-store │ │ ├── package.json │ │ └── src │ │ │ ├── createStore.ts │ │ │ ├── index.ts │ │ │ ├── rootStore.ts │ │ │ └── store.ts │ └── vite-plugin-chibivue │ │ ├── package.json │ │ └── src │ │ ├── index.ts │ │ ├── main.ts │ │ ├── script.ts │ │ ├── template.ts │ │ └── utils │ │ ├── descriptorCache.ts │ │ └── query.ts ├── chibivue │ ├── package.json │ └── src │ │ └── index.ts ├── compiler-core │ ├── package.json │ └── src │ │ ├── ast.ts │ │ ├── babelUtils.ts │ │ ├── codegen.ts │ │ ├── compile.ts │ │ ├── index.ts │ │ ├── options.ts │ │ ├── parse.ts │ │ ├── runtimeHelpers.ts │ │ ├── transform.ts │ │ ├── transforms │ │ ├── transformElement.ts │ │ ├── transformExpression.ts │ │ ├── vBind.ts │ │ ├── vFor.ts │ │ ├── vIf.ts │ │ ├── vModel.ts │ │ └── vOn.ts │ │ └── utils.ts ├── compiler-dom │ ├── package.json │ └── src │ │ ├── codegen.ts │ │ ├── index.ts │ │ ├── parserOptions.ts │ │ ├── runtimeHelpers.ts │ │ └── transforms │ │ ├── vModel.ts │ │ └── vOn.ts ├── compiler-sfc │ ├── package.json │ └── src │ │ ├── compileScript.ts │ │ ├── compileTemplate.ts │ │ ├── index.ts │ │ ├── parse.ts │ │ └── rewriteDefault.ts ├── reactivity │ ├── package.json │ └── src │ │ ├── baseHandler.ts │ │ ├── collectionHandlers.ts │ │ ├── computed.ts │ │ ├── dep.ts │ │ ├── effect.ts │ │ ├── effectScope.ts │ │ ├── index.ts │ │ ├── reactive.ts │ │ └── ref.ts ├── runtime-core │ ├── package.json │ └── src │ │ ├── apiComputed.ts │ │ ├── apiCreateApp.ts │ │ ├── apiDefineComponent.ts │ │ ├── apiInject.ts │ │ ├── apiLifecycle.ts │ │ ├── apiWatch.ts │ │ ├── component.ts │ │ ├── componentEmits.ts │ │ ├── componentOptions.ts │ │ ├── componentProps.ts │ │ ├── componentPublicInstance.ts │ │ ├── componentRenderContext.ts │ │ ├── componentRenderUtils.ts │ │ ├── componentSlots.ts │ │ ├── directives.ts │ │ ├── enums.ts │ │ ├── h.ts │ │ ├── helpers │ │ ├── renderList.ts │ │ ├── resolveAssets.ts │ │ └── toHandlers.ts │ │ ├── index.ts │ │ ├── renderer.ts │ │ ├── rendererTemplateRef.ts │ │ ├── scheduler.ts │ │ └── vnode.ts ├── runtime-dom │ ├── package.json │ └── src │ │ ├── directives │ │ ├── vModel.ts │ │ └── vOn.ts │ │ ├── index.ts │ │ ├── modules │ │ ├── attrs.ts │ │ ├── events.ts │ │ └── style.ts │ │ ├── nodeOps.ts │ │ ├── patchProp.ts │ │ └── runtimeHelpers.ts ├── runtime-vapor │ ├── README.md │ ├── package.json │ └── src │ │ ├── component.ts │ │ └── index.ts └── shared │ ├── package.json │ └── src │ ├── domTagConfig.ts │ ├── index.ts │ ├── makeMap.ts │ ├── normalizeProp.ts │ ├── shapeFlags.ts │ ├── toDisplayString.ts │ └── typeUtils.ts ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── tools ├── book-size │ ├── book │ │ ├── char-counts.json │ │ └── count-chars.ts │ └── pkg │ │ └── files.txt ├── chibivue-playground │ ├── main.ts │ └── template │ │ ├── index.html │ │ ├── package.json │ │ ├── src │ │ ├── App.vue │ │ ├── main.ts │ │ ├── router.ts │ │ ├── store │ │ │ └── counter.ts │ │ └── views │ │ │ ├── counter.vue │ │ │ └── store.vue │ │ └── vite.config.ts ├── create-chibivue │ ├── main.ts │ └── template │ │ ├── examples │ │ └── playground │ │ │ ├── .gitignore │ │ │ ├── index.html │ │ │ ├── package.json │ │ │ ├── pnpm-lock.yaml │ │ │ ├── src │ │ │ └── main.ts │ │ │ ├── tsconfig.json │ │ │ └── vite.config.js │ │ ├── package.json │ │ ├── packages │ │ └── index.ts │ │ ├── pnpm-lock.yaml │ │ └── tsconfig.json ├── translator │ └── ja2en │ │ ├── completion.ts │ │ ├── constant.ts │ │ ├── init.ts │ │ └── main.ts └── vue-playground │ ├── generate.ts │ ├── helpers.ts │ ├── locale.ts │ ├── main.ts │ ├── prompt.ts │ └── template │ ├── index.html │ ├── package.json.template │ ├── setup │ ├── dev.ts.template │ └── start.ts │ ├── src │ ├── App.vue │ └── main.ts │ ├── tsconfig.json.template │ ├── vite.config.ts │ └── vue-standalone.js.template ├── tsconfig.build.json ├── tsconfig.json └── vitest.config.ts /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | charset = utf-8 3 | indent_style = space 4 | indent_size = 2 5 | 6 | [Makefile] 7 | indent_style = tab -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | temp 4 | coverage 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | examples/playground 4 | examples/vuejs-core 5 | .env 6 | tools/translator/ja2en/input.md 7 | tools/translator/ja2en/output.md 8 | book/online-book/.vitepress/cache 9 | book/online-book/.vitepress/dist 10 | 11 | # ide 12 | .idea 13 | 14 | temp 15 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | book/images 3 | book/online-book/cache 4 | 5 | dist 6 | *.md 7 | *.html 8 | pnpm-lock.yaml 9 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "arrowParens": "avoid" 5 | } 6 | -------------------------------------------------------------------------------- /.textlintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "ja-space-between-half-and-full-width": { 4 | "space": "always" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/images/50-027-compiler-architecture.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/50-027-compiler-architecture.drawio.png -------------------------------------------------------------------------------- /book/images/50-027-new-compiler-architecture.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/50-027-new-compiler-architecture.drawio.png -------------------------------------------------------------------------------- /book/images/c1c2map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/c1c2map.png -------------------------------------------------------------------------------- /book/images/c1c2map_deleted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/c1c2map_deleted.png -------------------------------------------------------------------------------- /book/images/c1c2map_inserted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/c1c2map_inserted.png -------------------------------------------------------------------------------- /book/images/c1c2map_inserted_correct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/c1c2map_inserted_correct.png -------------------------------------------------------------------------------- /book/images/collection_receiver_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/collection_receiver_error.png -------------------------------------------------------------------------------- /book/images/compile_directives.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/compile_directives.png -------------------------------------------------------------------------------- /book/images/compile_sfc_render.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/compile_sfc_render.png -------------------------------------------------------------------------------- /book/images/complex_interpolation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/complex_interpolation.png -------------------------------------------------------------------------------- /book/images/design_with_transformer.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/design_with_transformer.drawio.png -------------------------------------------------------------------------------- /book/images/dir_ast.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/dir_ast.drawio.png -------------------------------------------------------------------------------- /book/images/element_to_string.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/element_to_string.png -------------------------------------------------------------------------------- /book/images/focus_in_element.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/focus_in_element.png -------------------------------------------------------------------------------- /book/images/focus_in_reactive_html_element.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/focus_in_reactive_html_element.png -------------------------------------------------------------------------------- /book/images/fragment_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/fragment_error.png -------------------------------------------------------------------------------- /book/images/hello_chibivue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/hello_chibivue.png -------------------------------------------------------------------------------- /book/images/hello_createApp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/hello_createApp.png -------------------------------------------------------------------------------- /book/images/hyper-ultimate-super-extreme-minimal-vue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/hyper-ultimate-super-extreme-minimal-vue.png -------------------------------------------------------------------------------- /book/images/infer_component_types.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/infer_component_types.png -------------------------------------------------------------------------------- /book/images/load_virtual_css_module.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/load_virtual_css_module.png -------------------------------------------------------------------------------- /book/images/load_virtual_css_module2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/load_virtual_css_module2.png -------------------------------------------------------------------------------- /book/images/load_virtual_css_module3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/load_virtual_css_module3.png -------------------------------------------------------------------------------- /book/images/logo/chibivue-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/logo/chibivue-img.png -------------------------------------------------------------------------------- /book/images/logo/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/logo/logo.png -------------------------------------------------------------------------------- /book/images/me_template_compiler_design.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/me_template_compiler_design.drawio.png -------------------------------------------------------------------------------- /book/images/minimum_example_artifacts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/minimum_example_artifacts.png -------------------------------------------------------------------------------- /book/images/next_tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/next_tick.png -------------------------------------------------------------------------------- /book/images/non_scheduled_effect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/non_scheduled_effect.png -------------------------------------------------------------------------------- /book/images/old_state_dom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/old_state_dom.png -------------------------------------------------------------------------------- /book/images/parse_interpolation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/parse_interpolation.png -------------------------------------------------------------------------------- /book/images/parse_sfc1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/parse_sfc1.png -------------------------------------------------------------------------------- /book/images/parse_sfc2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/parse_sfc2.png -------------------------------------------------------------------------------- /book/images/patch_bug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/patch_bug.png -------------------------------------------------------------------------------- /book/images/patch_rendering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/patch_rendering.png -------------------------------------------------------------------------------- /book/images/props.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/props.png -------------------------------------------------------------------------------- /book/images/proxy_get.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/proxy_get.png -------------------------------------------------------------------------------- /book/images/proxy_set.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/proxy_set.png -------------------------------------------------------------------------------- /book/images/reactive.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/reactive.drawio.png -------------------------------------------------------------------------------- /book/images/reactive_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/reactive_example.png -------------------------------------------------------------------------------- /book/images/reactive_example_mistake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/reactive_example_mistake.png -------------------------------------------------------------------------------- /book/images/reactive_html_element.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/reactive_html_element.png -------------------------------------------------------------------------------- /book/images/reactive_observer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/reactive_observer.png -------------------------------------------------------------------------------- /book/images/reactivity_create.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/reactivity_create.drawio.png -------------------------------------------------------------------------------- /book/images/refactor_createApp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/refactor_createApp.png -------------------------------------------------------------------------------- /book/images/refactor_createApp_createApp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/refactor_createApp_createApp.png -------------------------------------------------------------------------------- /book/images/refactor_createApp_render.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/refactor_createApp_render.png -------------------------------------------------------------------------------- /book/images/render_interpolation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/render_interpolation.png -------------------------------------------------------------------------------- /book/images/render_sfc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/render_sfc.png -------------------------------------------------------------------------------- /book/images/render_template.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/render_template.png -------------------------------------------------------------------------------- /book/images/resolve_bindings_original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/resolve_bindings_original.png -------------------------------------------------------------------------------- /book/images/resolve_components.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/resolve_components.png -------------------------------------------------------------------------------- /book/images/sample_vite_plugin_console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/sample_vite_plugin_console.png -------------------------------------------------------------------------------- /book/images/sample_vite_plugin_source.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/sample_vite_plugin_source.png -------------------------------------------------------------------------------- /book/images/simple_h_function.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/simple_h_function.png -------------------------------------------------------------------------------- /book/images/simple_h_function_attr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/simple_h_function_attr.png -------------------------------------------------------------------------------- /book/images/simple_h_function_event.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/simple_h_function_event.png -------------------------------------------------------------------------------- /book/images/simple_template_compiler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/simple_template_compiler.png -------------------------------------------------------------------------------- /book/images/simple_template_compiler2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/simple_template_compiler2.png -------------------------------------------------------------------------------- /book/images/simple_template_compiler_complex_html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/simple_template_compiler_complex_html.png -------------------------------------------------------------------------------- /book/images/state_is_not_defined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/state_is_not_defined.png -------------------------------------------------------------------------------- /book/images/transform_vbind.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/transform_vbind.drawio.png -------------------------------------------------------------------------------- /book/images/v_for.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/v_for.png -------------------------------------------------------------------------------- /book/images/v_for_ast.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/v_for_ast.drawio.png -------------------------------------------------------------------------------- /book/images/vbind_test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/vbind_test.png -------------------------------------------------------------------------------- /book/images/vif_fizzbuzz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/vif_fizzbuzz.png -------------------------------------------------------------------------------- /book/images/vite_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/images/vite_error.png -------------------------------------------------------------------------------- /book/impls/00_introduction/010_project_setup/examples/playground/src/main.ts: -------------------------------------------------------------------------------- 1 | import { helloChibivue } from 'chibivue' 2 | 3 | helloChibivue() 4 | -------------------------------------------------------------------------------- /book/impls/00_introduction/010_project_setup/packages/index.ts: -------------------------------------------------------------------------------- 1 | export const helloChibivue = () => { 2 | console.log('Hello chibivue!') 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/010_create_app/examples/playground/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'chibivue' 2 | 3 | const app = createApp({ 4 | render() { 5 | return 'Hello world.' 6 | }, 7 | }) 8 | 9 | app.mount('#app') 10 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/010_create_app2/examples/playground/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'chibivue' 2 | 3 | const app = createApp({ 4 | render() { 5 | return 'Hello world.' 6 | }, 7 | }) 8 | 9 | app.mount('#app') 10 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/010_create_app2/packages/index.ts: -------------------------------------------------------------------------------- 1 | export * from './runtime-dom' 2 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/010_create_app2/packages/runtime-core/component.ts: -------------------------------------------------------------------------------- 1 | import { ComponentOptions } from './componentOptions' 2 | 3 | export type Component = ComponentOptions 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/010_create_app2/packages/runtime-core/componentOptions.ts: -------------------------------------------------------------------------------- 1 | export type ComponentOptions = { 2 | render?: Function 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/010_create_app2/packages/runtime-core/index.ts: -------------------------------------------------------------------------------- 1 | export type { App, CreateAppFunction } from './apiCreateApp' 2 | export { createAppAPI } from './apiCreateApp' 3 | 4 | export type { RendererOptions } from './renderer' 5 | export { createRenderer } from './renderer' 6 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/010_create_app2/packages/runtime-dom/nodeOps.ts: -------------------------------------------------------------------------------- 1 | import { RendererOptions } from '../runtime-core' 2 | 3 | export const nodeOps: RendererOptions = { 4 | setElementText(node, text) { 5 | node.textContent = text 6 | }, 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/020_simple_h_function/packages/index.ts: -------------------------------------------------------------------------------- 1 | export * from './runtime-core' 2 | export * from './runtime-dom' 3 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/020_simple_h_function/packages/runtime-core/component.ts: -------------------------------------------------------------------------------- 1 | import { ComponentOptions } from './componentOptions' 2 | 3 | export type Component = ComponentOptions 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/020_simple_h_function/packages/runtime-core/componentOptions.ts: -------------------------------------------------------------------------------- 1 | export type ComponentOptions = { 2 | render?: Function 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/020_simple_h_function/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps } from './vnode' 2 | 3 | export function h( 4 | type: string, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return { type, props, children } 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/020_simple_h_function/packages/runtime-core/vnode.ts: -------------------------------------------------------------------------------- 1 | export interface VNode { 2 | type: string 3 | props: VNodeProps 4 | children: (VNode | string)[] 5 | } 6 | 7 | export interface VNodeProps { 8 | [key: string]: any 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/020_simple_h_function/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/030_reactive_system/packages/index.ts: -------------------------------------------------------------------------------- 1 | export * from './runtime-core' 2 | export * from './runtime-dom' 3 | export * from './reactivity' 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/030_reactive_system/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/030_reactive_system/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { reactive } from './reactive' 2 | export { ReactiveEffect } from './effect' 3 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/030_reactive_system/packages/reactivity/reactive.ts: -------------------------------------------------------------------------------- 1 | import { mutableHandlers } from './baseHandler' 2 | 3 | export function reactive(target: T): T { 4 | const proxy = new Proxy(target, mutableHandlers) 5 | return proxy as T 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/030_reactive_system/packages/runtime-core/component.ts: -------------------------------------------------------------------------------- 1 | import { ComponentOptions } from './componentOptions' 2 | 3 | export type Component = ComponentOptions 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/030_reactive_system/packages/runtime-core/componentOptions.ts: -------------------------------------------------------------------------------- 1 | export type ComponentOptions = { 2 | render?: Function 3 | setup?: () => Function 4 | } 5 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/030_reactive_system/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps } from './vnode' 2 | 3 | export function h( 4 | type: string, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return { type, props, children } 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/030_reactive_system/packages/runtime-core/vnode.ts: -------------------------------------------------------------------------------- 1 | export interface VNode { 2 | type: string 3 | props: VNodeProps 4 | children: (VNode | string)[] 5 | } 6 | 7 | export interface VNodeProps { 8 | [key: string]: any 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/030_reactive_system/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/040_vdom_system/packages/index.ts: -------------------------------------------------------------------------------- 1 | export * from './runtime-core' 2 | export * from './runtime-dom' 3 | export * from './reactivity' 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/040_vdom_system/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/040_vdom_system/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { reactive } from './reactive' 2 | export { ReactiveEffect } from './effect' 3 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/040_vdom_system/packages/reactivity/reactive.ts: -------------------------------------------------------------------------------- 1 | import { mutableHandlers } from './baseHandler' 2 | 3 | export function reactive(target: T): T { 4 | const proxy = new Proxy(target, mutableHandlers) 5 | return proxy as T 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/040_vdom_system/packages/runtime-core/component.ts: -------------------------------------------------------------------------------- 1 | import { ComponentOptions } from './componentOptions' 2 | 3 | export type Component = ComponentOptions 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/040_vdom_system/packages/runtime-core/componentOptions.ts: -------------------------------------------------------------------------------- 1 | export type ComponentOptions = { 2 | render?: Function 3 | setup?: () => Function 4 | } 5 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/040_vdom_system/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps, createVNode } from './vnode' 2 | 3 | export function h( 4 | type: string, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return createVNode(type, props, children) 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/040_vdom_system/packages/runtime-core/index.ts: -------------------------------------------------------------------------------- 1 | export type { App, CreateAppFunction } from './apiCreateApp' 2 | export { createAppAPI } from './apiCreateApp' 3 | 4 | export type { RendererOptions } from './renderer' 5 | export { createRenderer } from './renderer' 6 | 7 | export { h } from './h' 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/040_vdom_system/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system/packages/index.ts: -------------------------------------------------------------------------------- 1 | export * from './runtime-core' 2 | export * from './runtime-dom' 3 | export * from './reactivity' 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { reactive } from './reactive' 2 | export { ReactiveEffect } from './effect' 3 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system/packages/reactivity/reactive.ts: -------------------------------------------------------------------------------- 1 | import { mutableHandlers } from './baseHandler' 2 | 3 | export function reactive(target: T): T { 4 | const proxy = new Proxy(target, mutableHandlers) 5 | return proxy as T 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system/packages/runtime-core/componentOptions.ts: -------------------------------------------------------------------------------- 1 | export type ComponentOptions = { 2 | render?: Function 3 | setup?: () => Function 4 | } 5 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps, createVNode } from './vnode' 2 | 3 | export function h( 4 | type: string | object, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return createVNode(type, props, children) 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system2/packages/index.ts: -------------------------------------------------------------------------------- 1 | export * from './runtime-core' 2 | export * from './runtime-dom' 3 | export * from './reactivity' 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system2/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system2/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { reactive } from './reactive' 2 | export { ReactiveEffect } from './effect' 3 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system2/packages/reactivity/reactive.ts: -------------------------------------------------------------------------------- 1 | import { mutableHandlers } from './baseHandler' 2 | 3 | export function reactive(target: T): T { 4 | const proxy = new Proxy(target, mutableHandlers) 5 | return proxy as T 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system2/packages/runtime-core/componentOptions.ts: -------------------------------------------------------------------------------- 1 | export type ComponentOptions = { 2 | props?: Record 3 | setup?: (props: Record) => Function 4 | render?: Function 5 | } 6 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system2/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps, createVNode } from './vnode' 2 | 3 | export function h( 4 | type: string | object, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return createVNode(type, props, children) 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system2/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system3/packages/index.ts: -------------------------------------------------------------------------------- 1 | export * from './runtime-core' 2 | export * from './runtime-dom' 3 | export * from './reactivity' 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system3/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system3/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { reactive } from './reactive' 2 | export { ReactiveEffect } from './effect' 3 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system3/packages/reactivity/reactive.ts: -------------------------------------------------------------------------------- 1 | import { mutableHandlers } from './baseHandler' 2 | 3 | export function reactive(target: T): T { 4 | const proxy = new Proxy(target, mutableHandlers) 5 | return proxy as T 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system3/packages/runtime-core/componentOptions.ts: -------------------------------------------------------------------------------- 1 | export type ComponentOptions = { 2 | props?: Record 3 | setup?: ( 4 | props: Record, 5 | ctx: { emit: (event: string, ...args: any[]) => void }, 6 | ) => Function 7 | render?: Function 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system3/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps, createVNode } from './vnode' 2 | 3 | export function h( 4 | type: string | object, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return createVNode(type, props, children) 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system3/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/050_component_system3/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler/examples/playground/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'chibivue' 2 | 3 | const app = createApp({ 4 | template: `Hello World!!`, 5 | }) 6 | app.mount('#app') 7 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler/packages/compiler-dom/index.ts: -------------------------------------------------------------------------------- 1 | import { baseCompile } from '../compiler-core' 2 | 3 | export function compile(template: string) { 4 | return baseCompile(template) 5 | } 6 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { reactive } from './reactive' 2 | export { ReactiveEffect } from './effect' 3 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler/packages/reactivity/reactive.ts: -------------------------------------------------------------------------------- 1 | import { mutableHandlers } from './baseHandler' 2 | 3 | export function reactive(target: T): T { 4 | const proxy = new Proxy(target, mutableHandlers) 5 | return proxy as T 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler2/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler2/packages/compiler-dom/index.ts: -------------------------------------------------------------------------------- 1 | import { baseCompile } from '../compiler-core' 2 | 3 | export function compile(template: string) { 4 | return baseCompile(template) 5 | } 6 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler2/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { reactive } from './reactive' 2 | export { ReactiveEffect } from './effect' 3 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler2/packages/reactivity/reactive.ts: -------------------------------------------------------------------------------- 1 | import { mutableHandlers } from './baseHandler' 2 | 3 | export function reactive(target: T): T { 4 | const proxy = new Proxy(target, mutableHandlers) 5 | return proxy as T 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler2/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler2/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler3/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler3/packages/compiler-dom/index.ts: -------------------------------------------------------------------------------- 1 | import { baseCompile } from '../compiler-core' 2 | 3 | export function compile(template: string) { 4 | return baseCompile(template) 5 | } 6 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler3/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { reactive } from './reactive' 2 | export { ReactiveEffect } from './effect' 3 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler3/packages/reactivity/reactive.ts: -------------------------------------------------------------------------------- 1 | import { mutableHandlers } from './baseHandler' 2 | 3 | export function reactive(target: T): T { 4 | const proxy = new Proxy(target, mutableHandlers) 5 | return proxy as T 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler3/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/060_template_compiler3/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler/packages/compiler-dom/index.ts: -------------------------------------------------------------------------------- 1 | import { baseCompile } from '../compiler-core' 2 | 3 | export function compile(template: string) { 4 | return baseCompile(template) 5 | } 6 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { reactive } from './reactive' 2 | export { ReactiveEffect } from './effect' 3 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler/packages/reactivity/reactive.ts: -------------------------------------------------------------------------------- 1 | import { mutableHandlers } from './baseHandler' 2 | 3 | export function reactive(target: T): T { 4 | const proxy = new Proxy(target, mutableHandlers) 5 | return proxy as T 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps, createVNode } from './vnode' 2 | 3 | export function h( 4 | type: string | object, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return createVNode(type, props, children) 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler/plugin-sample/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler/plugin-sample/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import './style.css' 3 | // @ts-ignore 4 | import App from './App.vue' 5 | import './plugin.sample.js' 6 | 7 | createApp(App).mount('#app') 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler/plugin-sample/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler2/examples/playground/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'chibivue' 2 | // @ts-ignore 3 | import App from './App.vue' 4 | 5 | const app = createApp(App) 6 | 7 | app.mount('#app') 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler2/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler2/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler2/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler2/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler2/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { reactive } from './reactive' 2 | export { ReactiveEffect } from './effect' 3 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler2/packages/reactivity/reactive.ts: -------------------------------------------------------------------------------- 1 | import { mutableHandlers } from './baseHandler' 2 | 3 | export function reactive(target: T): T { 4 | const proxy = new Proxy(target, mutableHandlers) 5 | return proxy as T 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler2/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps, createVNode } from './vnode' 2 | 3 | export function h( 4 | type: string | object, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return createVNode(type, props, children) 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler2/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler2/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler3/examples/playground/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'chibivue' 2 | // @ts-ignore 3 | import App from './App.vue' 4 | 5 | const app = createApp(App) 6 | 7 | app.mount('#app') 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler3/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler3/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler3/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler3/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler3/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler3/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { reactive } from './reactive' 2 | export { ReactiveEffect } from './effect' 3 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler3/packages/reactivity/reactive.ts: -------------------------------------------------------------------------------- 1 | import { mutableHandlers } from './baseHandler' 2 | 3 | export function reactive(target: T): T { 4 | const proxy = new Proxy(target, mutableHandlers) 5 | return proxy as T 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler3/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps, createVNode } from './vnode' 2 | 3 | export function h( 4 | type: string | object, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return createVNode(type, props, children) 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler3/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler3/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler4/examples/playground/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'chibivue' 2 | // @ts-ignore 3 | import App from './App.vue' 4 | 5 | const app = createApp(App) 6 | 7 | app.mount('#app') 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler4/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler4/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler4/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler4/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler4/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler4/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { reactive } from './reactive' 2 | export { ReactiveEffect } from './effect' 3 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler4/packages/reactivity/reactive.ts: -------------------------------------------------------------------------------- 1 | import { mutableHandlers } from './baseHandler' 2 | 3 | export function reactive(target: T): T { 4 | const proxy = new Proxy(target, mutableHandlers) 5 | return proxy as T 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler4/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps, createVNode } from './vnode' 2 | 3 | export function h( 4 | type: string | object, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return createVNode(type, props, children) 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler4/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/10_minimum_example/070_sfc_compiler4/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/010_patch_keyed_children/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/010_patch_keyed_children/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/010_patch_keyed_children/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/010_patch_keyed_children/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/010_patch_keyed_children/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { reactive } from './reactive' 2 | export { ReactiveEffect } from './effect' 3 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/010_patch_keyed_children/packages/reactivity/reactive.ts: -------------------------------------------------------------------------------- 1 | import { mutableHandlers } from './baseHandler' 2 | 3 | export function reactive(target: T): T { 4 | const proxy = new Proxy(target, mutableHandlers) 5 | return proxy as T 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/010_patch_keyed_children/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/010_patch_keyed_children/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/020_bit_flags/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/020_bit_flags/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/020_bit_flags/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/020_bit_flags/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/020_bit_flags/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/020_bit_flags/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { reactive } from './reactive' 2 | export { ReactiveEffect } from './effect' 3 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/020_bit_flags/packages/reactivity/reactive.ts: -------------------------------------------------------------------------------- 1 | import { mutableHandlers } from './baseHandler' 2 | 3 | export function reactive(target: T): T { 4 | const proxy = new Proxy(target, mutableHandlers) 5 | return proxy as T 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/020_bit_flags/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps, createVNode } from './vnode' 2 | 3 | export function h( 4 | type: string | object, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return createVNode(type, props, children) 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/020_bit_flags/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/020_bit_flags/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/020_bit_flags/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/040_scheduler/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/040_scheduler/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/040_scheduler/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/040_scheduler/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/040_scheduler/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/040_scheduler/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { reactive } from './reactive' 2 | export { ReactiveEffect } from './effect' 3 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/040_scheduler/packages/reactivity/reactive.ts: -------------------------------------------------------------------------------- 1 | import { mutableHandlers } from './baseHandler' 2 | 3 | export function reactive(target: T): T { 4 | const proxy = new Proxy(target, mutableHandlers) 5 | return proxy as T 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/040_scheduler/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps, createVNode } from './vnode' 2 | 3 | export function h( 4 | type: string | object, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return createVNode(type, props, children) 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/040_scheduler/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/040_scheduler/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/040_scheduler/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/050_next_tick/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/050_next_tick/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/050_next_tick/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/050_next_tick/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/050_next_tick/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/050_next_tick/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { reactive } from './reactive' 2 | export { ReactiveEffect } from './effect' 3 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/050_next_tick/packages/reactivity/reactive.ts: -------------------------------------------------------------------------------- 1 | import { mutableHandlers } from './baseHandler' 2 | 3 | export function reactive(target: T): T { 4 | const proxy = new Proxy(target, mutableHandlers) 5 | return proxy as T 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/050_next_tick/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps, createVNode } from './vnode' 2 | 3 | export function h( 4 | type: string | object, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return createVNode(type, props, children) 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/050_next_tick/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/050_next_tick/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/050_next_tick/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/060_other_props/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/060_other_props/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/060_other_props/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/060_other_props/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/060_other_props/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/060_other_props/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { reactive } from './reactive' 2 | export { ReactiveEffect } from './effect' 3 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/060_other_props/packages/reactivity/reactive.ts: -------------------------------------------------------------------------------- 1 | import { mutableHandlers } from './baseHandler' 2 | 3 | export function reactive(target: T): T { 4 | const proxy = new Proxy(target, mutableHandlers) 5 | return proxy as T 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/060_other_props/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps, createVNode } from './vnode' 2 | 3 | export function h( 4 | type: string | object, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return createVNode(type, props, children) 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/060_other_props/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/060_other_props/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/060_other_props/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | -------------------------------------------------------------------------------- /book/impls/20_basic_virtual_dom/060_other_props/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/010_ref/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/010_ref/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/010_ref/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/010_ref/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/010_ref/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/010_ref/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { ref } from './ref' 2 | export { reactive } from './reactive' 3 | export { ReactiveEffect } from './effect' 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/010_ref/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps, createVNode } from './vnode' 2 | 3 | export function h( 4 | type: string | object, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return createVNode(type, props, children) 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/010_ref/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/010_ref/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/010_ref/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/010_ref/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/020_shallow_ref/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/020_shallow_ref/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/020_shallow_ref/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/020_shallow_ref/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/020_shallow_ref/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { ref, shallowRef, triggerRef } from './ref' 2 | export { reactive } from './reactive' 3 | export { ReactiveEffect } from './effect' 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/020_shallow_ref/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/020_shallow_ref/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/020_shallow_ref/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/020_shallow_ref/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/030_to_ref/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/030_to_ref/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/030_to_ref/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/030_to_ref/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/030_to_ref/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/030_to_ref/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { ref, shallowRef, triggerRef, toRef } from './ref' 2 | export { reactive } from './reactive' 3 | export { ReactiveEffect } from './effect' 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/030_to_ref/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps, createVNode } from './vnode' 2 | 3 | export function h( 4 | type: string | object, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return createVNode(type, props, children) 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/030_to_ref/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/030_to_ref/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/030_to_ref/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/030_to_ref/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/030_to_ref/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/040_to_refs/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/040_to_refs/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/040_to_refs/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/040_to_refs/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/040_to_refs/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/040_to_refs/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { ref, shallowRef, triggerRef, toRef, toRefs } from './ref' 2 | export { reactive } from './reactive' 3 | export { ReactiveEffect } from './effect' 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/040_to_refs/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps, createVNode } from './vnode' 2 | 3 | export function h( 4 | type: string | object, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return createVNode(type, props, children) 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/040_to_refs/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/040_to_refs/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/040_to_refs/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/040_to_refs/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/040_to_refs/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/050_computed/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/050_computed/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/050_computed/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/050_computed/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/050_computed/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/050_computed/packages/reactivity/index.ts: -------------------------------------------------------------------------------- 1 | export { ref, shallowRef, triggerRef, toRef, toRefs } from './ref' 2 | export { reactive } from './reactive' 3 | export { ReactiveEffect } from './effect' 4 | export { computed } from './computed' 5 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/050_computed/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps, createVNode } from './vnode' 2 | 3 | export function h( 4 | type: string | object, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return createVNode(type, props, children) 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/050_computed/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/050_computed/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/050_computed/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/050_computed/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/050_computed/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/060_computed_setter/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/060_computed_setter/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/060_computed_setter/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/060_computed_setter/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/060_computed_setter/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/060_computed_setter/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/060_computed_setter/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/060_computed_setter/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/060_computed_setter/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/070_watch/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/070_watch/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/070_watch/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/070_watch/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/070_watch/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/070_watch/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNode, VNodeProps, createVNode } from './vnode' 2 | 3 | export function h( 4 | type: string | object, 5 | props: VNodeProps, 6 | children: (VNode | string)[], 7 | ) { 8 | return createVNode(type, props, children) 9 | } 10 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/070_watch/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/070_watch/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/070_watch/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/070_watch/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/070_watch/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/080_watch_api_extends/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/080_watch_api_extends/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/080_watch_api_extends/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/080_watch_api_extends/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/080_watch_api_extends/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/080_watch_api_extends/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/080_watch_api_extends/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/080_watch_api_extends/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/080_watch_api_extends/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/090_watch_effect/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/090_watch_effect/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/090_watch_effect/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/090_watch_effect/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/090_watch_effect/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/090_watch_effect/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/090_watch_effect/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/090_watch_effect/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/090_watch_effect/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/100_reactive_proxy_target_type/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/100_reactive_proxy_target_type/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/100_reactive_proxy_target_type/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/100_reactive_proxy_target_type/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/100_reactive_proxy_target_type/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/100_reactive_proxy_target_type/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/100_reactive_proxy_target_type/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/100_reactive_proxy_target_type/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/100_reactive_proxy_target_type/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/110_template_refs/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/110_template_refs/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/110_template_refs/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/110_template_refs/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/110_template_refs/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/110_template_refs/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/110_template_refs/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/110_template_refs/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/110_template_refs/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/120_proxy_handler_improvement/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/120_proxy_handler_improvement/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/120_proxy_handler_improvement/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/120_proxy_handler_improvement/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/120_proxy_handler_improvement/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/120_proxy_handler_improvement/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/120_proxy_handler_improvement/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/120_proxy_handler_improvement/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/120_proxy_handler_improvement/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/130_cleanup_effects/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/130_cleanup_effects/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/130_cleanup_effects/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/130_cleanup_effects/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/130_cleanup_effects/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/130_cleanup_effects/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/130_cleanup_effects/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/130_cleanup_effects/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/130_cleanup_effects/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/140_effect_scope/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/140_effect_scope/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/140_effect_scope/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/140_effect_scope/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/140_effect_scope/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/140_effect_scope/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/140_effect_scope/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/140_effect_scope/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/140_effect_scope/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/150_other_apis/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/150_other_apis/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/150_other_apis/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/150_other_apis/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/150_other_apis/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/150_other_apis/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/150_other_apis/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/150_other_apis/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/30_basic_reactivity_system/150_other_apis/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/010_lifecycle_hooks/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/010_lifecycle_hooks/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/010_lifecycle_hooks/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/010_lifecycle_hooks/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/010_lifecycle_hooks/packages/runtime-core/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/010_lifecycle_hooks/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/010_lifecycle_hooks/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/010_lifecycle_hooks/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/010_lifecycle_hooks/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/010_lifecycle_hooks/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/020_provide_inject/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/020_provide_inject/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/020_provide_inject/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/020_provide_inject/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/020_provide_inject/packages/runtime-core/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/020_provide_inject/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/020_provide_inject/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/020_provide_inject/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/020_provide_inject/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/020_provide_inject/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/030_component_proxy/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/030_component_proxy/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/030_component_proxy/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/030_component_proxy/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/030_component_proxy/packages/runtime-core/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/030_component_proxy/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/030_component_proxy/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/030_component_proxy/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/030_component_proxy/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/030_component_proxy/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/040_setup_context/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/040_setup_context/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/040_setup_context/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/040_setup_context/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/040_setup_context/packages/runtime-core/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/040_setup_context/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/040_setup_context/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/040_setup_context/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/040_setup_context/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/040_setup_context/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/050_component_slot/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/050_component_slot/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/050_component_slot/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/050_component_slot/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/050_component_slot/packages/runtime-core/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/050_component_slot/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNodeProps, createVNode } from './vnode' 2 | 3 | export function h(type: string | object, props: VNodeProps, children: any) { 4 | return createVNode(type, props, children) 5 | } 6 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/050_component_slot/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/050_component_slot/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/050_component_slot/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/050_component_slot/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | SLOTS_CHILDREN = 1 << 5, 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/050_component_slot/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | 3 | export type Prettify = { [K in keyof T]: T[K] } & {} 4 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/060_slot_extend/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/060_slot_extend/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/060_slot_extend/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/060_slot_extend/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/060_slot_extend/packages/runtime-core/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/060_slot_extend/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNodeProps, createVNode } from './vnode' 2 | 3 | export function h(type: string | object, props: VNodeProps, children: any) { 4 | return createVNode(type, props, children) 5 | } 6 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/060_slot_extend/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/060_slot_extend/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/060_slot_extend/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/060_slot_extend/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | SLOTS_CHILDREN = 1 << 5, 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/060_slot_extend/packages/shared/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type IfAny = 0 extends 1 & T ? Y : N 2 | 3 | export type Prettify = { [K in keyof T]: T[K] } & {} 4 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/070_options_api/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/070_options_api/packages/compiler-core/options.ts: -------------------------------------------------------------------------------- 1 | export type CompilerOptions = { 2 | isBrowser?: boolean 3 | } 4 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/070_options_api/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/070_options_api/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/070_options_api/packages/runtime-core/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/070_options_api/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNodeProps, createVNode } from './vnode' 2 | 3 | export function h(type: string | object, props: VNodeProps, children: any) { 4 | return createVNode(type, props, children) 5 | } 6 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/070_options_api/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/070_options_api/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/070_options_api/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/40_basic_component_system/070_options_api/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | SLOTS_CHILDREN = 1 << 5, 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/010_transformer/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/010_transformer/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/010_transformer/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/010_transformer/packages/runtime-core/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/010_transformer/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNodeProps, createVNode } from './vnode' 2 | 3 | export function h(type: string | object, props: VNodeProps, children: any) { 4 | return createVNode(type, props, children) 5 | } 6 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/010_transformer/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/010_transformer/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/010_transformer/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/010_transformer/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | SLOTS_CHILDREN = 1 << 5, 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/020_v_bind/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/020_v_bind/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/020_v_bind/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/020_v_bind/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/020_v_bind/packages/runtime-core/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/020_v_bind/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNodeProps, createVNode } from './vnode' 2 | 3 | export function h(type: string | object, props: VNodeProps, children: any) { 4 | return createVNode(type, props, children) 5 | } 6 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/020_v_bind/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/020_v_bind/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/020_v_bind/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | export * from './normalizeProp' 4 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/020_v_bind/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | SLOTS_CHILDREN = 1 << 5, 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/022_transform_expression/examples/playground/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'chibivue' 2 | 3 | // @ts-ignore 4 | import App from './App.vue' 5 | 6 | const app = createApp(App) 7 | 8 | app.mount('#app') 9 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/022_transform_expression/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/022_transform_expression/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/022_transform_expression/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/022_transform_expression/packages/runtime-core/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/022_transform_expression/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNodeProps, createVNode } from './vnode' 2 | 3 | export function h(type: string | object, props: VNodeProps, children: any) { 4 | return createVNode(type, props, children) 5 | } 6 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/022_transform_expression/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/022_transform_expression/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/022_transform_expression/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | export * from './normalizeProp' 4 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/022_transform_expression/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | SLOTS_CHILDREN = 1 << 5, 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/025_v_on/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/025_v_on/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/025_v_on/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/025_v_on/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/025_v_on/packages/runtime-core/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/025_v_on/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNodeProps, createVNode } from './vnode' 2 | 3 | export function h(type: string | object, props: VNodeProps, children: any) { 4 | return createVNode(type, props, children) 5 | } 6 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/025_v_on/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/025_v_on/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/025_v_on/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | export * from './normalizeProp' 4 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/025_v_on/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | SLOTS_CHILDREN = 1 << 5, 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier/packages/runtime-core/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNodeProps, createVNode } from './vnode' 2 | 3 | export function h(type: string | object, props: VNodeProps, children: any) { 4 | return createVNode(type, props, children) 5 | } 6 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier/packages/runtime-dom/runtimeHelpers.ts: -------------------------------------------------------------------------------- 1 | import { registerRuntimeHelpers } from '../compiler-core/runtimeHelpers' 2 | 3 | export const V_ON_WITH_MODIFIERS = Symbol() 4 | 5 | registerRuntimeHelpers({ 6 | [V_ON_WITH_MODIFIERS]: `withModifiers`, 7 | }) 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | export * from './normalizeProp' 4 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | SLOTS_CHILDREN = 1 << 5, 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier2/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier2/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier2/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier2/packages/runtime-core/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier2/packages/runtime-core/h.ts: -------------------------------------------------------------------------------- 1 | import { VNodeProps, createVNode } from './vnode' 2 | 3 | export function h(type: string | object, props: VNodeProps, children: any) { 4 | return createVNode(type, props, children) 5 | } 6 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier2/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier2/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier2/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | export * from './normalizeProp' 4 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/027_event_modifier2/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | SLOTS_CHILDREN = 1 << 5, 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/030_fragment/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/030_fragment/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/030_fragment/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/030_fragment/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/030_fragment/packages/runtime-core/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/030_fragment/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/030_fragment/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/030_fragment/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | export * from './normalizeProp' 4 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/030_fragment/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | SLOTS_CHILDREN = 1 << 5, 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/035_comment/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/035_comment/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/035_comment/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/035_comment/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/035_comment/packages/runtime-core/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/035_comment/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/035_comment/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/035_comment/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | export * from './normalizeProp' 4 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/035_comment/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | SLOTS_CHILDREN = 1 << 5, 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/040_v_if_and_structural_directive/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/040_v_if_and_structural_directive/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/040_v_if_and_structural_directive/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/040_v_if_and_structural_directive/packages/runtime-core/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/040_v_if_and_structural_directive/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/040_v_if_and_structural_directive/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/040_v_if_and_structural_directive/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | export * from './normalizeProp' 4 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/040_v_if_and_structural_directive/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | SLOTS_CHILDREN = 1 << 5, 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/050_v_for/examples/playground/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'chibivue' 2 | 3 | // @ts-ignore 4 | import App from './App.vue' 5 | 6 | const app = createApp(App) 7 | 8 | app.mount('#app') 9 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/050_v_for/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/050_v_for/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/050_v_for/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/050_v_for/packages/reactivity/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/050_v_for/packages/runtime-core/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/050_v_for/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/050_v_for/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/050_v_for/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | export * from './normalizeProp' 4 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/050_v_for/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | SLOTS_CHILDREN = 1 << 5, 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/060_resolve_components/packages/compiler-core/index.ts: -------------------------------------------------------------------------------- 1 | export * from './codegen' 2 | export * from './compile' 3 | export * from './parse' 4 | export * from './ast' 5 | export * from './options' 6 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/060_resolve_components/packages/compiler-sfc/compileTemplate.ts: -------------------------------------------------------------------------------- 1 | import { TemplateChildNode } from '../compiler-core' 2 | 3 | export interface TemplateCompiler { 4 | compile(template: string): string 5 | parse(template: string): { children: TemplateChildNode[] } 6 | } 7 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/060_resolve_components/packages/compiler-sfc/index.ts: -------------------------------------------------------------------------------- 1 | export * from './parse' 2 | export * from './rewriteDefault' 3 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/060_resolve_components/packages/runtime-core/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/060_resolve_components/packages/runtime-dom/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/060_resolve_components/packages/runtime-dom/modules/class.ts: -------------------------------------------------------------------------------- 1 | export function patchClass(el: Element, value: string | null) { 2 | if (value == null) { 3 | el.removeAttribute('class') 4 | } else { 5 | el.className = value 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/060_resolve_components/packages/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './general' 2 | export * from './typeUtils' 3 | export * from './normalizeProp' 4 | -------------------------------------------------------------------------------- /book/impls/50_basic_template_compiler/060_resolve_components/packages/shared/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | SLOTS_CHILDREN = 1 << 5, 7 | } 8 | -------------------------------------------------------------------------------- /book/impls/60_basic_sfc_compiler/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/impls/60_basic_sfc_compiler/.gitkeep -------------------------------------------------------------------------------- /book/impls/bonus/hyper-ultimate-super-extreme-minimal-vue/examples/playground/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'hyper-ultimate-super-extreme-minimal-vue' 2 | 3 | // @ts-ignore 4 | import App from './App.vue' 5 | 6 | const app = createApp(App) 7 | app.mount('#app') 8 | -------------------------------------------------------------------------------- /book/online-book/src/30-basic-reactivity-system/005-reactivity-optimization.md: -------------------------------------------------------------------------------- 1 | # 响应式系统的优化 2 | 3 | 待定 -------------------------------------------------------------------------------- /book/online-book/src/50-basic-template-compiler/080-slot.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/50-basic-template-compiler/080-slot.md -------------------------------------------------------------------------------- /book/online-book/src/50-basic-template-compiler/090-other-directives.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/50-basic-template-compiler/090-other-directives.md -------------------------------------------------------------------------------- /book/online-book/src/50-basic-template-compiler/100-chore-compiler.md: -------------------------------------------------------------------------------- 1 | # 细节工作 2 | 3 | TODO: 4 | 5 | - 移除无用的空白 6 | - 代码风格 -------------------------------------------------------------------------------- /book/online-book/src/50-basic-template-compiler/500-custom-directive.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/50-basic-template-compiler/500-custom-directive.md -------------------------------------------------------------------------------- /book/online-book/src/60-basic-sfc-compiler/010-script-setup.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/60-basic-sfc-compiler/010-script-setup.md -------------------------------------------------------------------------------- /book/online-book/src/60-basic-sfc-compiler/020-define-props.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/60-basic-sfc-compiler/020-define-props.md -------------------------------------------------------------------------------- /book/online-book/src/60-basic-sfc-compiler/030-define-emits.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/60-basic-sfc-compiler/030-define-emits.md -------------------------------------------------------------------------------- /book/online-book/src/60-basic-sfc-compiler/040-scoped-css.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/60-basic-sfc-compiler/040-scoped-css.md -------------------------------------------------------------------------------- /book/online-book/src/90-web-application-essentials/010-plugins/010-router.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/90-web-application-essentials/010-plugins/010-router.md -------------------------------------------------------------------------------- /book/online-book/src/90-web-application-essentials/010-plugins/020-preprocessors.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/90-web-application-essentials/010-plugins/020-preprocessors.md -------------------------------------------------------------------------------- /book/online-book/src/90-web-application-essentials/020-ssr/010-create-ssr-app.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/90-web-application-essentials/020-ssr/010-create-ssr-app.md -------------------------------------------------------------------------------- /book/online-book/src/90-web-application-essentials/020-ssr/020-hydration.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/90-web-application-essentials/020-ssr/020-hydration.md -------------------------------------------------------------------------------- /book/online-book/src/90-web-application-essentials/030-builtins/010-keep-alive.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/90-web-application-essentials/030-builtins/010-keep-alive.md -------------------------------------------------------------------------------- /book/online-book/src/90-web-application-essentials/030-builtins/020-suspense.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/90-web-application-essentials/030-builtins/020-suspense.md -------------------------------------------------------------------------------- /book/online-book/src/90-web-application-essentials/030-builtins/030-transition.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/90-web-application-essentials/030-builtins/030-transition.md -------------------------------------------------------------------------------- /book/online-book/src/90-web-application-essentials/040-optimizations/010-static-hoisting.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/90-web-application-essentials/040-optimizations/010-static-hoisting.md -------------------------------------------------------------------------------- /book/online-book/src/90-web-application-essentials/040-optimizations/020-patch-flags.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/90-web-application-essentials/040-optimizations/020-patch-flags.md -------------------------------------------------------------------------------- /book/online-book/src/90-web-application-essentials/040-optimizations/030-tree-flattening.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/90-web-application-essentials/040-optimizations/030-tree-flattening.md -------------------------------------------------------------------------------- /book/online-book/src/public/chibivue-img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/public/chibivue-img.png -------------------------------------------------------------------------------- /book/online-book/src/public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/public/logo.png -------------------------------------------------------------------------------- /book/online-book/src/public/ubugeeei.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/miyuesc/chibivue-zh/6ae95c392d02b3aedad3a827951c2c46c29e5da4/book/online-book/src/public/ubugeeei.jpg -------------------------------------------------------------------------------- /examples/app/src/main.ts: -------------------------------------------------------------------------------- 1 | // @ts-nocheck 2 | import { createApp } from 'chibivue' 3 | import { createStore } from 'chibivue-store' 4 | import App from './App.vue' 5 | import { router } from './router' 6 | 7 | const app = createApp(App) 8 | app.use(router) 9 | app.use(createStore()) 10 | app.mount('#app') 11 | -------------------------------------------------------------------------------- /examples/vapor/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'chibivue' 2 | 3 | // @ts-ignore 4 | import App from './App.vue' 5 | 6 | const app = createApp(App) 7 | app.mount('#app') 8 | -------------------------------------------------------------------------------- /packages/@extensions/chibivue-router/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chibivue-router", 3 | "version": "0.0.8", 4 | "main": "dist/index.js", 5 | "author": "Ubugeeei ", 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /packages/@extensions/chibivue-router/src/index.ts: -------------------------------------------------------------------------------- 1 | export { createRouter } from './router' 2 | export { useRouter, useRoute } from './useApi' 3 | export { createWebHistory } from './history' 4 | -------------------------------------------------------------------------------- /packages/@extensions/chibivue-router/src/types/index.ts: -------------------------------------------------------------------------------- 1 | export interface RouteLocationNormalizedLoaded { 2 | fullPath: string 3 | component: any 4 | } 5 | -------------------------------------------------------------------------------- /packages/@extensions/chibivue-store/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chibivue-store", 3 | "version": "0.0.8", 4 | "main": "dist/index.js", 5 | "author": "Ubugeeei ", 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /packages/@extensions/chibivue-store/src/index.ts: -------------------------------------------------------------------------------- 1 | export { createStore } from './createStore' 2 | export { defineStore } from './store' 3 | -------------------------------------------------------------------------------- /packages/@extensions/vite-plugin-chibivue/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vite-plugin-chibivue", 3 | "version": "0.0.8", 4 | "main": "dist/index.js", 5 | "author": "Ubugeeei ", 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /packages/chibivue/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chibivue", 3 | "version": "0.0.8", 4 | "main": "dist/index.js", 5 | "author": "Ubugeeei ", 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /packages/compiler-core/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@chibivue/compiler-core", 3 | "version": "0.0.8", 4 | "main": "dist/index.js", 5 | "author": "Ubugeeei ", 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /packages/compiler-dom/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@chibivue/compiler-dom", 3 | "version": "0.0.8", 4 | "main": "dist/index.js", 5 | "author": "Ubugeeei ", 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /packages/compiler-dom/src/codegen.ts: -------------------------------------------------------------------------------- 1 | import type { RootNode } from '@chibivue/compiler-core' 2 | 3 | export interface CodegenResult { 4 | code: string 5 | preamble: string 6 | ast: RootNode 7 | } 8 | -------------------------------------------------------------------------------- /packages/compiler-dom/src/parserOptions.ts: -------------------------------------------------------------------------------- 1 | import type { ParserOptions } from '@chibivue/compiler-core' 2 | import { isHTMLTag } from '@chibivue/shared' 3 | 4 | export const parserOptions: ParserOptions = { 5 | isNativeTag: tag => isHTMLTag(tag), 6 | } 7 | -------------------------------------------------------------------------------- /packages/compiler-sfc/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@chibivue/compiler-sfc", 3 | "version": "0.0.8", 4 | "main": "dist/index.js", 5 | "author": "Ubugeeei ", 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /packages/reactivity/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@chibivue/reactivity", 3 | "version": "0.0.8", 4 | "main": "dist/index.js", 5 | "author": "Ubugeeei ", 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /packages/reactivity/src/dep.ts: -------------------------------------------------------------------------------- 1 | import { type ReactiveEffect } from './effect' 2 | 3 | export type Dep = Set 4 | 5 | export const createDep = (effects?: ReactiveEffect[]): Dep => { 6 | const dep: Dep = new Set(effects) 7 | return dep 8 | } 9 | -------------------------------------------------------------------------------- /packages/reactivity/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './reactive' 2 | export * from './ref' 3 | export * from './computed' 4 | export * from './effect' 5 | export * from './effectScope' 6 | -------------------------------------------------------------------------------- /packages/runtime-core/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@chibivue/runtime-core", 3 | "version": "0.0.8", 4 | "main": "dist/index.js", 5 | "author": "Ubugeeei ", 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /packages/runtime-core/src/apiComputed.ts: -------------------------------------------------------------------------------- 1 | import { computed as _computed } from '@chibivue/reactivity' 2 | 3 | export const computed = ((getter: any) => { 4 | // @ts-ignore 5 | return _computed(getter) 6 | }) as typeof _computed 7 | -------------------------------------------------------------------------------- /packages/runtime-core/src/enums.ts: -------------------------------------------------------------------------------- 1 | export const enum LifecycleHooks { 2 | BEFORE_MOUNT = 'bm', 3 | MOUNTED = 'm', 4 | BEFORE_UPDATE = 'bu', 5 | UPDATED = 'u', 6 | BEFORE_UNMOUNT = 'bum', 7 | UNMOUNTED = 'um', 8 | } 9 | -------------------------------------------------------------------------------- /packages/runtime-core/src/helpers/renderList.ts: -------------------------------------------------------------------------------- 1 | import { VNodeChild } from '../vnode' 2 | 3 | export function renderList( 4 | source: T[], 5 | renderItem: (value: T, index: number) => VNodeChild, 6 | ): VNodeChild[] { 7 | return source.map(renderItem) 8 | } 9 | -------------------------------------------------------------------------------- /packages/runtime-dom/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@chibivue/runtime-dom", 3 | "version": "0.0.8", 4 | "main": "dist/index.js", 5 | "author": "Ubugeeei ", 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /packages/runtime-dom/src/modules/attrs.ts: -------------------------------------------------------------------------------- 1 | export function patchAttr(el: Element, key: string, value: any) { 2 | if (value == null) { 3 | el.removeAttribute(key) 4 | } else { 5 | el.setAttribute(key, value) 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /packages/runtime-vapor/README.md: -------------------------------------------------------------------------------- 1 | # WARNING 2 | 3 | Vapor Mode is a new feature that will be implemented in Vue.js in the future; its implementation is not currently publicly available. 4 | 5 | This directory is completely implemented by the author (@Ubugeeei) for fun and is completely different from the original code. 6 | -------------------------------------------------------------------------------- /packages/runtime-vapor/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@chibivue/runtime-vapor", 3 | "version": "0.0.8", 4 | "main": "dist/index.js", 5 | "author": "Ubugeeei ", 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /packages/shared/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@chibivue/shared", 3 | "version": "0.0.8", 4 | "main": "dist/index.js", 5 | "author": "Ubugeeei ", 6 | "license": "MIT" 7 | } 8 | -------------------------------------------------------------------------------- /packages/shared/src/shapeFlags.ts: -------------------------------------------------------------------------------- 1 | export const enum ShapeFlags { 2 | ELEMENT = 1, 3 | COMPONENT = 1 << 2, 4 | TEXT_CHILDREN = 1 << 3, 5 | ARRAY_CHILDREN = 1 << 4, 6 | SLOTS_CHILDREN = 1 << 5, 7 | } 8 | -------------------------------------------------------------------------------- /packages/shared/src/typeUtils.ts: -------------------------------------------------------------------------------- 1 | export type Prettify = { [K in keyof T]: T[K] } & {} 2 | 3 | export type UnionToIntersection = ( 4 | U extends any ? (k: U) => void : never 5 | ) extends (k: infer I) => void 6 | ? I 7 | : never 8 | 9 | export type IfAny = 0 extends 1 & T ? Y : N 10 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - 'packages/**' 3 | - 'examples/*' 4 | 5 | # NOTE: auto generated by `nr setup:vue` 6 | - '!examples/vuejs-core' 7 | -------------------------------------------------------------------------------- /tools/book-size/book/char-counts.json: -------------------------------------------------------------------------------- 1 | { "length": 370442 } 2 | -------------------------------------------------------------------------------- /tools/chibivue-playground/template/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@examples/playground", 3 | "version": "0.0.0", 4 | "type": "module", 5 | "scripts": { 6 | "dev": "vite" 7 | }, 8 | "devDependencies": { 9 | "vite": "^5.1.0" 10 | }, 11 | "volta": { 12 | "node": "20.10.0" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /tools/create-chibivue/template/examples/playground/src/main.ts: -------------------------------------------------------------------------------- 1 | import { helloChibivue } from 'chibivue' 2 | 3 | helloChibivue() 4 | -------------------------------------------------------------------------------- /tools/create-chibivue/template/examples/playground/vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | 3 | export default defineConfig({ 4 | resolve: { 5 | alias: { 6 | chibivue: `${process.cwd()}/../../packages`, 7 | }, 8 | }, 9 | }) 10 | -------------------------------------------------------------------------------- /tools/create-chibivue/template/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chibivue", 3 | "version": "0.0.0", 4 | "description": "", 5 | "scripts": { 6 | "dev": "cd examples/playground && pnpm i && pnpm run dev" 7 | }, 8 | "devDependencies": { 9 | "@types/node": "^18.15.11" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /tools/create-chibivue/template/packages/index.ts: -------------------------------------------------------------------------------- 1 | export const helloChibivue = () => { 2 | console.log('Hello chibivue!') 3 | } 4 | -------------------------------------------------------------------------------- /tools/translator/ja2en/constant.ts: -------------------------------------------------------------------------------- 1 | export const OUT = 'tools/translator/ja2en/output.md' 2 | export const INPUT = 'tools/translator/ja2en/input.md' 3 | -------------------------------------------------------------------------------- /tools/vue-playground/template/src/App.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 9 | -------------------------------------------------------------------------------- /tools/vue-playground/template/src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | 3 | // @ts-ignore 4 | const modules = import.meta.glob('./*.(vue|js)') 5 | const mod = (modules['.' + location.pathname] || modules['./App.vue'])() 6 | 7 | mod.then(({ default: mod }: any) => createApp(mod).mount('#app')) 8 | -------------------------------------------------------------------------------- /tools/vue-playground/template/vue-standalone.js.template: -------------------------------------------------------------------------------- 1 | export * from '<%= vuejs_core_absolute_path %>/packages/vue/src' -------------------------------------------------------------------------------- /tsconfig.build.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "declaration": true, 5 | "emitDeclarationOnly": true 6 | }, 7 | "exclude": ["examples"] 8 | } 9 | -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vitest/config' 2 | 3 | export default defineConfig({ 4 | test: { 5 | globals: true, 6 | include: ['**/tests/**/*.spec.ts'], 7 | environmentMatchGlobs: [['**/tests/**/*.spec.ts', 'jsdom']], 8 | }, 9 | }) 10 | --------------------------------------------------------------------------------