gitextract_8ywn65uv/ ├── .clippy.toml ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── renovate.json │ └── workflows/ │ ├── ci.yml │ ├── napi-libraries.yml │ └── napi-release.yml ├── .gitignore ├── .rustfmt.toml ├── CONTRIBUTING.md ├── Cargo.toml ├── LICENSE ├── crates/ │ └── ivi_compiler/ │ ├── Cargo.toml │ └── src/ │ ├── chunk/ │ │ └── mod.rs │ ├── context.rs │ ├── import.rs │ ├── lib.rs │ ├── module/ │ │ └── mod.rs │ ├── oveo.rs │ └── tpl/ │ ├── emit.rs │ ├── html.rs │ ├── mod.rs │ ├── opcodes.rs │ └── parser.rs ├── docs/ │ ├── internals/ │ │ ├── dynamic-lists.md │ │ ├── misc.md │ │ ├── perf.md │ │ └── template-compiler.md │ └── misc/ │ └── migrating-from-react.md ├── justfile ├── napi.just ├── package.json ├── packages/ │ ├── @ivi/ │ │ ├── compiler/ │ │ │ ├── .gitignore │ │ │ ├── Cargo.toml │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── build.rs │ │ │ ├── index.d.ts │ │ │ ├── index.js │ │ │ ├── package.json │ │ │ ├── packages/ │ │ │ │ ├── darwin-arm64/ │ │ │ │ │ ├── README.md │ │ │ │ │ └── package.json │ │ │ │ ├── darwin-x64/ │ │ │ │ │ ├── README.md │ │ │ │ │ └── package.json │ │ │ │ ├── linux-arm64-gnu/ │ │ │ │ │ ├── README.md │ │ │ │ │ └── package.json │ │ │ │ ├── linux-x64-gnu/ │ │ │ │ │ ├── README.md │ │ │ │ │ └── package.json │ │ │ │ ├── win32-arm64-msvc/ │ │ │ │ │ ├── README.md │ │ │ │ │ └── package.json │ │ │ │ └── win32-x64-msvc/ │ │ │ │ ├── README.md │ │ │ │ └── package.json │ │ │ ├── src/ │ │ │ │ └── lib.rs │ │ │ └── tsconfig.json │ │ ├── identity/ │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── index.ts │ │ │ └── tsconfig.json │ │ ├── mock-dom/ │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ ├── global.ts │ │ │ │ └── index.ts │ │ │ └── tsconfig.json │ │ ├── portal/ │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── index.ts │ │ │ └── tsconfig.json │ │ ├── rolldown/ │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── index.ts │ │ │ └── tsconfig.json │ │ ├── rollup-plugin/ │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── package.json │ │ │ ├── src/ │ │ │ │ └── index.ts │ │ │ └── tsconfig.json │ │ └── vite-plugin/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.json │ └── ivi/ │ ├── LICENSE │ ├── README.md │ ├── oveo.json │ ├── package.json │ ├── src/ │ │ ├── html/ │ │ │ ├── index.ts │ │ │ └── parser.ts │ │ ├── index.ts │ │ ├── lib/ │ │ │ ├── core.ts │ │ │ ├── equal.ts │ │ │ ├── state.ts │ │ │ ├── template.ts │ │ │ └── utils.ts │ │ ├── template/ │ │ │ ├── compiler.ts │ │ │ ├── ir.ts │ │ │ ├── parser.ts │ │ │ └── shared.ts │ │ └── test-utils/ │ │ └── index.ts │ └── tsconfig.json ├── rust-toolchain.toml ├── tests/ │ ├── compiler/ │ │ ├── chunk/ │ │ │ └── strings/ │ │ │ ├── data/ │ │ │ │ ├── 01-basic/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ └── 02-multiple/ │ │ │ │ ├── input.js │ │ │ │ └── output.js │ │ │ └── strings.test.ts │ │ ├── module/ │ │ │ ├── data/ │ │ │ │ ├── 01-text/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 02-element/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 03-element/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 04-nested-text/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 05-nested-expr/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 06-text-before-expr/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 07-text-after-expr/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 09-text-before-and-after-expr/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 103-hoist-return-fn/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 11-multiple-roots/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 12-multiple-roots/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 13-multiple-nested-expr/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 14-svg-element/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 15-svg-template/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 16-nested-mix/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 17-void-element/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 18-expr-before-element/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 19-comment/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 20-whitespace/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 21-whitespace/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 22-whitespace/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 23-whitespace/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 24-whitespace/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 25-whitespace/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 26-whitespace/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 27-whitespace/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 28-whitespace/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 29-whitespace/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 30-whitespace/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 31-whitespace/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 32-whitespace/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 33-whitespace/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 34-whitespace/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 35-whitespace/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 36-whitespace/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 40-attribute/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 41-attribute/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 42-attribute/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 43-attributes/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 44-attributes/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 50-prop/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 51-prop/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 60-style/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 61-style/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 62-style/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 63-style-mix/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 70-event/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 80-directive/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ ├── 90-hoist-class-identifier/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ └── 91-hoist-class-static-member/ │ │ │ │ ├── input.js │ │ │ │ └── output.js │ │ │ └── module.test.ts │ │ ├── module-all-disabled/ │ │ │ ├── data/ │ │ │ │ ├── 01-event/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ └── 02-hoist-return-fn/ │ │ │ │ ├── input.js │ │ │ │ └── output.js │ │ │ └── module.test.ts │ │ ├── module-oveo-disabled/ │ │ │ ├── data/ │ │ │ │ ├── 01-event/ │ │ │ │ │ ├── input.js │ │ │ │ │ └── output.js │ │ │ │ └── 02-hoist-return-fn/ │ │ │ │ ├── input.js │ │ │ │ └── output.js │ │ │ └── module.test.ts │ │ └── normalize.ts │ ├── package.json │ └── runtime/ │ ├── array.test.ts │ ├── component.test.ts │ ├── containsDOMElement.test.ts │ ├── context.test.ts │ ├── equal.test.ts │ ├── findDOMNode.test.ts │ ├── hasDOMElement.test.ts │ ├── hole.test.ts │ ├── html/ │ │ └── parser.test.ts │ ├── list.test.ts │ ├── mock-dom/ │ │ ├── document.test.ts │ │ ├── element.test.ts │ │ ├── innerHTML.test.ts │ │ ├── node.test.ts │ │ └── template.test.ts │ ├── template/ │ │ ├── attribute.test.ts │ │ ├── className.test.ts │ │ ├── directive.test.ts │ │ ├── event.test.ts │ │ ├── htm.test.ts │ │ ├── innerHTML.test.ts │ │ ├── property.test.ts │ │ ├── propertyDiffDOM.test.ts │ │ ├── style.test.ts │ │ ├── svg.test.ts │ │ └── textContent.test.ts │ ├── text.test.ts │ ├── useAnimationFrameEffect.test.ts │ ├── useEffect.test.ts │ ├── useIdleEffect.test.ts │ ├── useMemo.test.ts │ ├── useReducer.test.ts │ └── useState.test.ts ├── tsconfig.composite.json └── tsconfig.json