Copy disabled (too large)
Download .txt
Showing preview only (11,552K chars total). Download the full file to get everything.
Repository: marko-js/marko
Branch: main
Commit: f284f5886997
Files: 11461
Total size: 8.1 MB
Directory structure:
gitextract_k0_h5jq0/
├── .browserslistrc
├── .c8rc.json
├── .changeset/
│ ├── README.md
│ └── config.json
├── .gitattributes
├── .github/
│ ├── CODE_OF_CONDUCT.md
│ ├── CONTRIBUTING.md
│ ├── ISSUE_TEMPLATE/
│ │ ├── Bug_report.md
│ │ ├── Feature_request.md
│ │ └── Support_question.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── workflows/
│ └── ci.yml
├── .gitignore
├── .husky/
│ ├── .gitignore
│ └── pre-commit
├── .lintstagedrc.json
├── .mocharc.json
├── .prettierignore
├── .prettierrc.json
├── .sizes/
│ ├── comments.csr/
│ │ └── entry.js
│ ├── comments.ssr/
│ │ └── entry.js
│ ├── counter.csr/
│ │ └── entry.js
│ ├── counter.ssr/
│ │ └── entry.js
│ ├── dom.js
│ └── name-cache.json
├── .sizes.json
├── LICENSE
├── SECURITY.md
├── babel.config.js
├── cspell.json
├── eslint.config.mjs
├── package.json
├── packages/
│ ├── compiler/
│ │ ├── CHANGELOG.md
│ │ ├── babel-types.d.ts
│ │ ├── babel-utils.d.ts
│ │ ├── babel-utils.js
│ │ ├── config.d.ts
│ │ ├── config.js
│ │ ├── index.d.ts
│ │ ├── internal/
│ │ │ └── babel/
│ │ │ ├── index.ts
│ │ │ ├── modules.d.ts
│ │ │ └── package.json
│ │ ├── modules.d.ts
│ │ ├── modules.js
│ │ ├── package.json
│ │ ├── register.d.ts
│ │ ├── register.js
│ │ ├── scripts/
│ │ │ ├── bundle-babel.mts
│ │ │ ├── types/
│ │ │ │ ├── babel-traverse.js
│ │ │ │ └── babel-types.js
│ │ │ └── types.js
│ │ └── src/
│ │ ├── babel-plugin/
│ │ │ ├── file.js
│ │ │ ├── index.js
│ │ │ ├── parser.js
│ │ │ ├── plugins/
│ │ │ │ ├── migrate.js
│ │ │ │ └── transform.js
│ │ │ └── util/
│ │ │ └── plugin-hooks.js
│ │ ├── babel-utils/
│ │ │ ├── assert.js
│ │ │ ├── compute.js
│ │ │ ├── diagnostics.js
│ │ │ ├── get-file.js
│ │ │ ├── imports.js
│ │ │ ├── index.js
│ │ │ ├── loc.js
│ │ │ ├── parse.js
│ │ │ ├── taglib.js
│ │ │ ├── tags.js
│ │ │ └── template-string.js
│ │ ├── config.js
│ │ ├── index.js
│ │ ├── register.js
│ │ ├── taglib/
│ │ │ ├── config.js
│ │ │ ├── finder/
│ │ │ │ └── index.js
│ │ │ ├── index.js
│ │ │ ├── loader/
│ │ │ │ ├── Attribute.js
│ │ │ │ ├── DependencyChain.js
│ │ │ │ ├── Property.js
│ │ │ │ ├── Tag.js
│ │ │ │ ├── Taglib.js
│ │ │ │ ├── Transformer.js
│ │ │ │ ├── cache.js
│ │ │ │ ├── index.js
│ │ │ │ ├── json-file-reader.js
│ │ │ │ ├── loadAttributeFromProps.js
│ │ │ │ ├── loadAttributes.js
│ │ │ │ ├── loadTagFromFile.js
│ │ │ │ ├── loadTagFromProps.js
│ │ │ │ ├── loadTaglibFromDir.js
│ │ │ │ ├── loadTaglibFromFile.js
│ │ │ │ ├── loadTaglibFromProps.js
│ │ │ │ ├── loaders.js
│ │ │ │ ├── property-handlers.js
│ │ │ │ ├── scanTagsDir.js
│ │ │ │ └── types.js
│ │ │ ├── lookup/
│ │ │ │ └── index.js
│ │ │ ├── marko-html.json
│ │ │ ├── marko-math.json
│ │ │ └── marko-svg.json
│ │ └── util/
│ │ ├── build-code-frame.js
│ │ ├── merge-errors.js
│ │ ├── quick-hash.js
│ │ ├── should-optimize.js
│ │ ├── strip-ansi.js
│ │ └── try-load-translator.js
│ ├── runtime-class/
│ │ ├── CHANGELOG.md
│ │ ├── README.md
│ │ ├── bin/
│ │ │ ├── markoc
│ │ │ └── markoc.js
│ │ ├── browser-refresh.js
│ │ ├── compiler-browser.marko
│ │ ├── compiler.js
│ │ ├── components-browser.marko
│ │ ├── components.js
│ │ ├── docs/
│ │ │ ├── 10-awesome-marko-features.md
│ │ │ ├── body-content.md
│ │ │ ├── class-components.md
│ │ │ ├── cloudflare-workers.md
│ │ │ ├── compiler.md
│ │ │ ├── component-diagram.afdesign
│ │ │ ├── concise.md
│ │ │ ├── conditionals-and-lists.md
│ │ │ ├── core-tags.md
│ │ │ ├── custom-tags.md
│ │ │ ├── editor-plugins.md
│ │ │ ├── events.md
│ │ │ ├── express.md
│ │ │ ├── fastify.md
│ │ │ ├── getting-started.md
│ │ │ ├── http.md
│ │ │ ├── installing.md
│ │ │ ├── koa.md
│ │ │ ├── lasso.md
│ │ │ ├── marko-5-upgrade.md
│ │ │ ├── marko-json.md
│ │ │ ├── marko-vs-react.md
│ │ │ ├── redux.md
│ │ │ ├── rendering.md
│ │ │ ├── rollup.md
│ │ │ ├── state.md
│ │ │ ├── structure.json
│ │ │ ├── styles.md
│ │ │ ├── syntax.md
│ │ │ ├── troubleshooting-streaming.md
│ │ │ ├── typescript.md
│ │ │ ├── vite.md
│ │ │ ├── webpack.md
│ │ │ └── why-is-marko-fast.md
│ │ ├── env.js
│ │ ├── helpers/
│ │ │ ├── README.md
│ │ │ ├── empty.js
│ │ │ └── notEmpty.js
│ │ ├── index-browser.marko
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── legacy-components-browser.marko
│ │ ├── legacy-components.js
│ │ ├── node-require.js
│ │ ├── package.json
│ │ ├── src/
│ │ │ ├── build.json
│ │ │ ├── compiler/
│ │ │ │ ├── config.js
│ │ │ │ ├── index.js
│ │ │ │ └── modules.js
│ │ │ ├── core-tags/
│ │ │ │ ├── .eslintrc
│ │ │ │ ├── components/
│ │ │ │ │ ├── init-components-tag.js
│ │ │ │ │ ├── preferred-script-location-tag.js
│ │ │ │ │ └── preserve-tag.js
│ │ │ │ └── core/
│ │ │ │ ├── __flush_here_and_after__.js
│ │ │ │ ├── await/
│ │ │ │ │ ├── AsyncValue.js
│ │ │ │ │ ├── client-reorder-runtime.js
│ │ │ │ │ ├── index.d.marko
│ │ │ │ │ ├── renderer.js
│ │ │ │ │ └── reorderer-renderer.js
│ │ │ │ └── script.d.marko
│ │ │ ├── index.js
│ │ │ ├── node-require/
│ │ │ │ ├── browser-refresh.js
│ │ │ │ ├── hot-reload.js
│ │ │ │ └── index.js
│ │ │ ├── node_modules/
│ │ │ │ └── @internal/
│ │ │ │ ├── components-beginComponent/
│ │ │ │ │ ├── index-browser.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── components-define-widget-legacy/
│ │ │ │ │ ├── index-browser.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── components-endComponent/
│ │ │ │ │ ├── index-browser.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── components-entry/
│ │ │ │ │ ├── index-browser.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── components-entry-legacy/
│ │ │ │ │ ├── index-browser.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── components-registry/
│ │ │ │ │ ├── index-browser.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── components-util/
│ │ │ │ │ ├── index-browser.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── create-readable/
│ │ │ │ │ ├── index-browser.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── loader/
│ │ │ │ │ ├── fallback-node.js
│ │ │ │ │ ├── index-browser.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── preserve-tag/
│ │ │ │ │ ├── index-browser.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── package.json
│ │ │ │ ├── require/
│ │ │ │ │ ├── index-browser.js
│ │ │ │ │ ├── index-legacy-browser.js
│ │ │ │ │ ├── index-webpack.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── package.json
│ │ │ │ └── set-immediate/
│ │ │ │ ├── index-browser.js
│ │ │ │ ├── index-worker.js
│ │ │ │ ├── index.js
│ │ │ │ ├── package.json
│ │ │ │ └── queueMicrotask.js
│ │ │ ├── runtime/
│ │ │ │ ├── .eslintrc
│ │ │ │ ├── RenderResult.js
│ │ │ │ ├── components/
│ │ │ │ │ ├── Component.js
│ │ │ │ │ ├── ComponentDef.js
│ │ │ │ │ ├── ComponentsContext.js
│ │ │ │ │ ├── GlobalComponentsContext.js
│ │ │ │ │ ├── KeySequence.js
│ │ │ │ │ ├── ServerComponent.js
│ │ │ │ │ ├── State.js
│ │ │ │ │ ├── attach-detach.js
│ │ │ │ │ ├── defineComponent.js
│ │ │ │ │ ├── dom-data.js
│ │ │ │ │ ├── event-delegation.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── legacy/
│ │ │ │ │ │ ├── browser.json
│ │ │ │ │ │ ├── defineComponent-legacy.js
│ │ │ │ │ │ ├── defineRenderer-legacy.js
│ │ │ │ │ │ ├── defineWidget-legacy.js
│ │ │ │ │ │ ├── dependencies/
│ │ │ │ │ │ │ ├── html.js
│ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ └── vdom.js
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── jquery.js
│ │ │ │ │ │ ├── ready.js
│ │ │ │ │ │ └── renderer-legacy.js
│ │ │ │ │ ├── registry.js
│ │ │ │ │ ├── renderer.js
│ │ │ │ │ └── update-manager.js
│ │ │ │ ├── createOut.js
│ │ │ │ ├── dom-insert.js
│ │ │ │ ├── events.js
│ │ │ │ ├── helpers/
│ │ │ │ │ ├── _change-case.js
│ │ │ │ │ ├── assign.js
│ │ │ │ │ ├── attr-tag.js
│ │ │ │ │ ├── class-value.js
│ │ │ │ │ ├── dynamic-tag.js
│ │ │ │ │ ├── empty-component.js
│ │ │ │ │ ├── merge.js
│ │ │ │ │ ├── of-fallback.js
│ │ │ │ │ ├── render-tag.js
│ │ │ │ │ ├── serialize-noop.js
│ │ │ │ │ ├── skip-serialize.js
│ │ │ │ │ ├── style-value.js
│ │ │ │ │ ├── tags-compat/
│ │ │ │ │ │ ├── dom-debug.js
│ │ │ │ │ │ ├── dom-debug.mjs
│ │ │ │ │ │ ├── dom.js
│ │ │ │ │ │ ├── dom.mjs
│ │ │ │ │ │ ├── html-debug.js
│ │ │ │ │ │ ├── html-debug.mjs
│ │ │ │ │ │ ├── html.js
│ │ │ │ │ │ ├── html.mjs
│ │ │ │ │ │ ├── runtime-dom.js
│ │ │ │ │ │ └── runtime-html.js
│ │ │ │ │ └── to-string.js
│ │ │ │ ├── html/
│ │ │ │ │ ├── AsyncStream.js
│ │ │ │ │ ├── BufferedWriter.js
│ │ │ │ │ ├── StringWriter.js
│ │ │ │ │ ├── get-render-id.js
│ │ │ │ │ ├── helpers/
│ │ │ │ │ │ ├── _dynamic-attr.js
│ │ │ │ │ │ ├── attr.js
│ │ │ │ │ │ ├── attrs.js
│ │ │ │ │ │ ├── class-attr.js
│ │ │ │ │ │ ├── data-marko.js
│ │ │ │ │ │ ├── escape-script-placeholder.js
│ │ │ │ │ │ ├── escape-style-placeholder.js
│ │ │ │ │ │ ├── escape-xml.js
│ │ │ │ │ │ ├── merge-attrs.js
│ │ │ │ │ │ ├── props-script.js
│ │ │ │ │ │ └── style-attr.js
│ │ │ │ │ ├── hot-reload.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ └── marko-namespace.js
│ │ │ │ ├── renderable.js
│ │ │ │ └── vdom/
│ │ │ │ ├── AsyncVDOMBuilder.js
│ │ │ │ ├── VComment.js
│ │ │ │ ├── VComponent.js
│ │ │ │ ├── VDocumentFragment.js
│ │ │ │ ├── VElement.js
│ │ │ │ ├── VFragment.js
│ │ │ │ ├── VNode.js
│ │ │ │ ├── VText.js
│ │ │ │ ├── helpers/
│ │ │ │ │ ├── attrs.js
│ │ │ │ │ ├── const-element.js
│ │ │ │ │ └── merge-attrs.js
│ │ │ │ ├── hot-reload.js
│ │ │ │ ├── index.js
│ │ │ │ ├── is-text-only.js
│ │ │ │ ├── marko-namespace.js
│ │ │ │ ├── morphdom/
│ │ │ │ │ ├── fragment.js
│ │ │ │ │ ├── helpers.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── parse-html.js
│ │ │ │ └── vdom.js
│ │ │ ├── taglib/
│ │ │ │ └── index.js
│ │ │ ├── translator/
│ │ │ │ ├── cdata/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── index[html].js
│ │ │ │ │ └── index[vdom].js
│ │ │ │ ├── class.js
│ │ │ │ ├── comment/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── index[html].js
│ │ │ │ │ └── index[vdom].js
│ │ │ │ ├── declaration/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── index[html].js
│ │ │ │ │ └── index[vdom].js
│ │ │ │ ├── document-type/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── index[html].js
│ │ │ │ │ └── index[vdom].js
│ │ │ │ ├── index.js
│ │ │ │ ├── placeholder/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── index[html].js
│ │ │ │ │ └── index[vdom].js
│ │ │ │ ├── scriptlet.js
│ │ │ │ ├── tag/
│ │ │ │ │ ├── attribute/
│ │ │ │ │ │ ├── directives/
│ │ │ │ │ │ │ ├── class.js
│ │ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ │ ├── no-update-body-if.js
│ │ │ │ │ │ │ ├── no-update-body.js
│ │ │ │ │ │ │ ├── no-update-if.js
│ │ │ │ │ │ │ ├── no-update.js
│ │ │ │ │ │ │ └── style.js
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── modifiers/
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── no-update.js
│ │ │ │ │ │ └── scoped.js
│ │ │ │ │ ├── attribute-tag.js
│ │ │ │ │ ├── custom-tag.js
│ │ │ │ │ ├── dynamic-tag.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── macro-tag.js
│ │ │ │ │ ├── native-tag.js
│ │ │ │ │ ├── native-tag[html]/
│ │ │ │ │ │ ├── attributes.js
│ │ │ │ │ │ └── index.js
│ │ │ │ │ ├── native-tag[vdom]/
│ │ │ │ │ │ ├── attributes.js
│ │ │ │ │ │ └── index.js
│ │ │ │ │ └── util.js
│ │ │ │ ├── taglib/
│ │ │ │ │ ├── core/
│ │ │ │ │ │ ├── conditional/
│ │ │ │ │ │ │ ├── translate-else-if.js
│ │ │ │ │ │ │ ├── translate-else.js
│ │ │ │ │ │ │ ├── translate-if.js
│ │ │ │ │ │ │ └── util.js
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── macro/
│ │ │ │ │ │ │ ├── parse.js
│ │ │ │ │ │ │ └── translate.js
│ │ │ │ │ │ ├── migrate.js
│ │ │ │ │ │ ├── parse-class.js
│ │ │ │ │ │ ├── parse-client.js
│ │ │ │ │ │ ├── parse-export.js
│ │ │ │ │ │ ├── parse-import.js
│ │ │ │ │ │ ├── parse-module-code.js
│ │ │ │ │ │ ├── parse-server.js
│ │ │ │ │ │ ├── parse-static.js
│ │ │ │ │ │ ├── transform-body.js
│ │ │ │ │ │ ├── transform-style.js
│ │ │ │ │ │ ├── translate-await.js
│ │ │ │ │ │ ├── translate-for.js
│ │ │ │ │ │ ├── translate-html-comment.js
│ │ │ │ │ │ ├── translate-include-content.js
│ │ │ │ │ │ ├── translate-server-only.js
│ │ │ │ │ │ └── translate-while.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── text/
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── index[html].js
│ │ │ │ │ └── index[vdom].js
│ │ │ │ └── util/
│ │ │ │ ├── add-dependencies.js
│ │ │ │ ├── escape-regexp.js
│ │ │ │ ├── get-component-files.js
│ │ │ │ ├── html-out-write.js
│ │ │ │ ├── key-manager.js
│ │ │ │ ├── optimize-html-writes.js
│ │ │ │ ├── optimize-vdom-create.js
│ │ │ │ ├── plugin-hooks.js
│ │ │ │ ├── runtime-flags.js
│ │ │ │ ├── vdom-out-write.js
│ │ │ │ └── with-previous-location.js
│ │ │ └── translator.js
│ │ ├── tags-html.d.ts
│ │ ├── test/
│ │ │ ├── .gitignore
│ │ │ ├── __util__/
│ │ │ │ ├── BrowserHelpers.js
│ │ │ │ ├── async-helpers.js
│ │ │ │ ├── async-test-suite.js
│ │ │ │ ├── components-from-meta.js
│ │ │ │ ├── create-marko-jsdom-module.js
│ │ │ │ ├── domToHTML.js
│ │ │ │ ├── domToString.js
│ │ │ │ ├── package.json
│ │ │ │ ├── patch-module.js
│ │ │ │ ├── pubsub.js
│ │ │ │ ├── test-init-browser.js
│ │ │ │ ├── test-init.js
│ │ │ │ └── toHTML.js
│ │ │ ├── api/
│ │ │ │ ├── fixtures/
│ │ │ │ │ ├── error-renderSync/
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── error-renderSync-beginAsync/
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── load-render-callback/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── load-render-promise/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── load-source/
│ │ │ │ │ │ ├── custom-options-expected.html
│ │ │ │ │ │ ├── empty-options-expected.html
│ │ │ │ │ │ ├── invalid-template.marko
│ │ │ │ │ │ ├── no-options-expected.html
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── no-write-to-disk-load/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── no-write-to-disk-require/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── render-await-client-reorder-unhandled-rejected-promise/
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── render-await-promise-toString/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── render-callback-args/
│ │ │ │ │ │ ├── expected.2.html
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── render-callback-global-data/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── render-readable-stream-global-data/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── render-to-out-error/
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── render-writable-stream-global-data/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── renderSync/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── renderSync-global-data/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── renderSync-no-data/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── renderToString/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── renderToString-callback-async/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-async/
│ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── renderToString-callback-sync/
│ │ │ │ │ │ ├── expected.2.html
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── renderToString-no-callback-async/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-async/
│ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── require-compiled-template/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── require-hook-compiler-options/
│ │ │ │ │ │ ├── invalid.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── require-render-callback/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ └── require-render-to-stream/
│ │ │ │ │ ├── expected.html
│ │ │ │ │ ├── template.marko
│ │ │ │ │ └── test.js
│ │ │ │ └── index.test.js
│ │ │ ├── api-compiler/
│ │ │ │ ├── fixtures/
│ │ │ │ │ ├── compileFileForBrowser-callback.js/
│ │ │ │ │ │ ├── expected.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── compileFileForBrowser.js/
│ │ │ │ │ │ ├── expected.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── compileForBrowser-callback.js/
│ │ │ │ │ │ ├── expected.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── compileForBrowser-write-version-comment.js/
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── compileForBrowser.js/
│ │ │ │ │ │ ├── expected.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── configure/
│ │ │ │ │ │ └── test.js
│ │ │ │ │ └── configure-singleton/
│ │ │ │ │ └── test.js
│ │ │ │ └── index.test.js
│ │ │ ├── async-stream/
│ │ │ │ ├── fixtures/
│ │ │ │ │ └── hello.txt
│ │ │ │ └── index.test.js
│ │ │ ├── async-vdom-builder/
│ │ │ │ └── index.test.js
│ │ │ ├── components-browser/
│ │ │ │ ├── fixtures/
│ │ │ │ │ ├── adjacent-nested-fragments/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── text-display/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── append-prepend/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-api/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-api-move-root/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-conditional-events/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── custom-button.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-destroy-ref/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-legacy-button/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-destroy-unsubscribe-custom-events/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-custom-events/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-destroy-unsubscribe-dom-events/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-dom-event-listeners-repeated-non-bubbling/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-dom-events/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-legacy-button/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-dynamic-tag-name/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-event-handler-method-conditional-bubbles/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-event-handler-method-conditional-direct/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-event-handler-method-dynamic/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-extends-EventEmitter/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-file-exports-class/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-getComponent/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-getComponents-multiple/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-getComponents-single/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-getEl/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-getEls/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-include-ref/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-bar/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-include-ref-dynamic/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-bar/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-no-update-attrs/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-no-update-attrs-dynamic/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-preserve-all-state-when-rendered-in-loop/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-preserve-all-state-when-rerendered/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-preserve-all-state-when-rerendered-setTimeout/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-preserve-dom-attrs/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-preserve-dom-attrs-dynamic/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-preserve-dom-if/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-stateful-rerender/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-preserve-dom-repeated/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-preserve-dom-root/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-preserve-multiple-split/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-split/
│ │ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-render-to-iframe/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-iframe-content/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-iframe-more-content/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-renderToString/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-renderToString-callback-sync/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── hello/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── test-async/
│ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-renderToString-text-node/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── my-text-node.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-replaceState/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-rerender-init-order/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-rerender-init-order-child/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-rerender-reuse-stateful/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-rerender-stateless-new-props/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-setStateDirty/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-stateful-copy-state-on-write/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-stateful-no-copy-state-on-write-if-same-value/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-stateful-no-rerender-if-destroyed/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-stateful-preserve-body/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-stateful-button/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ │ └── marko-tag.json
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-stateful-update/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-stateful-update-handler/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-stateful-button/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ │ └── marko-tag.json
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-stateful-update-handler-no-match/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-stateful-button/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ │ └── marko-tag.json
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-stateful-update-on-mount/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-stopPropagation/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-subscribeTo-destroy-subscriber/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-subscribeTo-destroy-target/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-toggle-spread-attributes/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-transclusion/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-transclusion-alert/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ │ └── marko-tag.json
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-unescaped-html/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-unique-id/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-update-batch-not-empty/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── counter.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-var/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── custom-events/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-bar/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-custom-events/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── custom-events-declarative/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-bar/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-custom-events/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── custom-events-declarative-function/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-bar/
│ │ │ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ │ └── app-custom-events/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── custom-events-declarative-multiple/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-bar/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── custom-events-declarative-multiple-once/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-bar/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── custom-events-declaritive-once/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-bar/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── custom-events-repeated-component/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── item/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── lookup.js
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── custom-events-repeated-component-once/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── item/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── lookup.js
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── destroy-cleanup/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── destroy-component/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-simple/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── destroy-detach/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── destroy-legacy/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-bar/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-custom-events/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── destroy-multiple-root-els/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-boundary-inner-component-only/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── inner/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-component-mismatch/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── bar/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-component-mismatch-append/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── bar/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-component-toplevel-surrounded/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── bar/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-destroy-child/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-dynamic-attributes/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-dynamic-nested-roots/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── hello/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── message/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── welcome/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-existing-key-component-to-element/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-existing-key-component-to-fragment/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-insert-el-before-component/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-insert-unkeyed-el-before-component/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-insert-unkeyed-el-before-preserved-component/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-mismatch-remove-fragment/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-rearrange-keyed-components/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-rearrange-keyed-els/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-remove-all-els/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-remove-end-el/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-remove-start-el/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-simple/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-swap-components-dynamic/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── hello/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── world/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-swap-components-keyed/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── hello/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── world/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-swap-components-keyed-dynamic/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── hello/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── world/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-swap-keyed-el/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── diffpatch-swap-unkeyed-el/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── dom-custom-event/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── dom-event-handlers-alternate/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── dom-events-repeated-el-bubbling/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── dom-events-repeated-el-bubbling-one-arg/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── dom-events-repeated-el-bubbling-two-args/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── dom-events-repeated-el-non-bubbling/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── dom-events-repeated-el-non-bubbling-multiple/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── dynamic-tag-custom-event-handler/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── dynamic-tag-default-namespace/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── dynamic-tag-html-event-handler/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── dynamic-tag-no-update-html-attributes/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── dynamic-tag-preserve-old/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── dynamic-tag-root/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── modal.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── dynamic-tag-shorthand/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── dynamic-tag-switch-components/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── goodbye.marko
│ │ │ │ │ │ │ └── hello.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── dynamic-tag-user-key/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── emit-event-during-mount/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── custom-tag/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-attach-el/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-attach-el-function/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-attach-el-once/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-attach-if-else-nested-component/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── color-include/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-detach-component-destroy/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-detach-el/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-detach-el-once/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-detach-el-preventDefault/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-detach-remove-nested-component-last/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── color-li/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-detach-remove-nested-component-middle/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── color-li/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-handler-bubbling-once/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-handler-bubbling-once-split/
│ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-handler-custom-args/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-fancy-button/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-handler-dom-args-bubbling/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-handler-dom-args-bubbling-function/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-handler-dom-args-bubbling-multiple-top-level-elements/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-handler-dom-args-bubbling-once/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-handler-dom-args-non-bubbling/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-handler-dom-args-non-bubbling-once/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-handler-function/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-handler-non-bubbling-multiple-listeners/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-handler-non-bubbling-once/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-handler-non-bubbling-rerender-el-mismatch/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── event-handler-non-bubbling-root-el/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── extend-component/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-button/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ │ │ └── marko-tag.json
│ │ │ │ │ │ │ └── app-checkbox/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ │ └── marko-tag.json
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── for-first-el-key-cache-value/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── forceUpdate/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── form-controls-default-value/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── get-component-for-el-nested-fragments/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── child/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── get-component-for-el-split-component/
│ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── child/
│ │ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── get-el-nested-fragments/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── child/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── nested-child/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── global-rerender/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── global-rerender-nested/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── implicit-component/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── implicit-component-keys/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── include-event-handler/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── include-preserve-old/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── include-root/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ ├── modal.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── input-checkbox/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── input-global/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── input-no-change/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── input-no-change-nested/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ │ └── test.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── input-no-value/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── input-persisted/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── input-persisted-nested-component/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-counter/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── input-value-zero/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── insert-before-after/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── key-transcluded-content/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── some-nested-component/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── keyed-matching-transcluded/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── card/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── label-for/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── label-for-scoped-repeated/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── lifecyle-hooks-constructor/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── lifecyle-hooks-destroy/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── hooks.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── lifecyle-hooks-nested-no-id/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── hooks.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── lifecyle-hooks-nested-with-id/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── hooks.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── lifecyle-hooks-parent-child-ordering/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── hooks.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── lifecyle-hooks-render-arg/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── lifecyle-hooks-root/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── morphdom-node-added-nested-keyed/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── multiple-roots-rerender-root-child/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── nested-fragment-namespace/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── nested-fragments/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── container.marko
│ │ │ │ │ │ │ └── fragment.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── onCreate/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── onInput/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── onInput-instance-data/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── onInput-return/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── prefer-closest-tag/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── child/
│ │ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ │ ├── child/
│ │ │ │ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ │ │ │ └── test.marko
│ │ │ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ │ │ └── test.marko
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── test.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── preserve-component-transcluded-autokey/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── container.marko
│ │ │ │ │ │ │ └── counter.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── preserve-component-transcluded-userkey/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── container.marko
│ │ │ │ │ │ │ └── counter.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── preserve-dom/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── preserve-dom-body/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── preserve-dom-body-no-id/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── preserve-dom-body-shared-key/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── child-preserved.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── preserve-dom-conditional-before/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── preserve-dom-loop/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── preserve-dom-no-id/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── preserve-dom-server-mismatch/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── child.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── preserve-dom-transcluded-autokey/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── container.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── preserve-dom-transcluded-userkey/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── container.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── preserve-nested/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── preserve-nodes-update-scoped-elements/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── prevent-input-mutation-repeated-at-tags/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── menu/
│ │ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ │ └── marko-tag.json
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── redefine-component-var/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── ref-nested-component-multiple-root-els/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── multiple-root-els/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── ref-nested-component-multiple-root-els-with-refs/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── multiple-root-els/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── remove-last-multi-root-component/
│ │ │ │ │ │ ├── child.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── replace/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── replace-async/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── replaceChildrenOf/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-counter/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── rerender-destroy-incompatible/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── bar/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── rerender-multiple-roots/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── rerender-same-root/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── rerender-style-root/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── sanity-check-custom-event/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── sanity-check-implicit-bind-component/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── sanity-check-inline/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── sanity-check-key/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── sanity-check-multiple-root-els/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── sanity-check-single-file-component/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── sanity-check-template-entry/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── sanity-check-template-entry-split/
│ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── scoped-link/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── server-client-mismatch/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-bar/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── set-null-state/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── simple-attrs-optimize-toggle/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── split-browser/
│ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── split-browser-export-class/
│ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── split-browser-inline/
│ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── state-freeze/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── state-null-undefined/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── state-var/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── state-watch-null/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── state-watch-null-async/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── state-watch-undefined/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── style-attr/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── tag-empty/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── tag-params/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── name/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── tag-params-nested-tags/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── name/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── textarea/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── textarea-value-attribute/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── top-level-transcluded-content/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── inner.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── transcluded-component-from-non-rerender-root/
│ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-button/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── counter/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── transclusion-body-slot-attr/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-button/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── transclusion-body-slot-default-to-renderBody/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-button/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── transclusion-body-slot-tag/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-button/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── transclusion-include-not-in-state/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-button/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── transclusion-include-split/
│ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-button/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── transclusion-non-bubbling-event/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── container/
│ │ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ │ └── marko-tag.json
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── transclusion-repeated-nested/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── container/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── counter/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── list/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── transclusion-rerender-stateful/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── container/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── counter/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── transclusion-rerender-stateful-shared-key/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── container/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── counter/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── update-next-tick/
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ └── update-queued/
│ │ │ │ │ ├── component.js
│ │ │ │ │ ├── index.marko
│ │ │ │ │ └── test.js
│ │ │ │ ├── index.test.js
│ │ │ │ ├── template.component-browser.js
│ │ │ │ └── template.marko
│ │ │ ├── components-pages/
│ │ │ │ ├── fixtures/
│ │ │ │ │ ├── async-boundaries/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-hello/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── app-hello-async/
│ │ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ │ └── app-init-async/
│ │ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── await-surround-html/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── component-$globals/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── component-config/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── component-fixed-id/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-fixed-id/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-hello/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── component-globals/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── component-globals-async/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── component-implicit-event-handlers/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-button-component/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-button-split/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.component-browser.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── component-init-async/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── component-input/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── component-input-ref/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-bar/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── component-mount-root-hasRenderBody/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── component-mount-root-renderBody/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── component-state/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-foo/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-state-watch/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── custom-events/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-fancy-button/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── diff-body/
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── diff-body-root/
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── diff-head/
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── diff-head-root/
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── diff-html/
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── diff-html-include-layout/
│ │ │ │ │ │ ├── layout.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── diff-title/
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── dom-events/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── dom-events-bubbling/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── no-args/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── one-arg/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── one-arg-array/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── two-args/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── empty-component/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── b/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── empty-tag-with-key/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── dynamic-tag-key/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── split-tag-key/
│ │ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── getEl-no-rerender/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── getEl-split/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── split-component/
│ │ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── getRenderedComponents/
│ │ │ │ │ │ ├── browser.json
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-simple/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── components.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── if-empty-component/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── a/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── implicit-component-macro-params/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello-implicit-component/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── implicit-component-root/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── hello-explicit-component/
│ │ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ │ └── implicit-nested/
│ │ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── hello-implicit-component/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── implicit-component-root-tag-params/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── hello-implicit-component/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── name/
│ │ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ │ └── marko-tag.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── include-input-preserve-focus/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── container/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── root/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── include-preserve/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── foo/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── init-components-before-widgets-loaded/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── init-components-before-widgets-loaded-multiple-async/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── init-components-immediate/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-bar/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── app-baz/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── init-components-immediate-await-client-reorder/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-bar/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── init-components-tag/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-bar/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── app-baz/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── init-components-tag-none/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-bar/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── app-baz/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── init-included/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-bar/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── app-baz/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── lifecycle-events/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── lifecycle-events/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── lifecycle-events-component-class/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── lifecycle-events-component-class-ctor/
│ │ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── lifecycle-events-component-object/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── nesting/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── b/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── c/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── d/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── no-update/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── no-update-attr/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── no-update-body-el/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── no-update-body-textarea/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── no-update-el/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── no-update-el-nested/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── no-update-input-value/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── no-update-component/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── counter/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── no-update-nested-component-key/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── child/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── container/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── nested-child/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── root/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── no-update-with-an-event/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── counter/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── onInput/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── onInput-assign-null/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── onInput-assign-null-and-return/
│ │ │ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── onInput-assign-object/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── onInput-assign-object-and-return/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── onInput-return/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── preserve-looped-attribute-tag/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── child/
│ │ │ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ │ │ └── marko-tag.json
│ │ │ │ │ │ │ └── root/
│ │ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ │ └── marko-tag.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── preserve-no-update-for-loop/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── root/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── preserve-server-rendered-content-on-mount/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── root/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── preserve-transcluded-content-on-state-change/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── toggle-button/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── preserve-transcluded-key-on-state-change/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── child/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── container/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── root/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── remove-last-multi-root-component/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── child/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── root/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── render-and-mount-order/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-hello/
│ │ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ │ └── inner/
│ │ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-wrapper/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── repeated-list-items-unkeyed/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── list-items/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── runtime-id/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── server-browser-unique-ids/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── server-render-dom-event-handlers/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── counter/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── server-render-function-references/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── split-async-keys/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-child/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-hello/
│ │ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── split-component-dynamic-tag/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-button/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── app-root/
│ │ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── split-component-renderer/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── app-button-split/
│ │ │ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ │ │ └── marko-tag.json
│ │ │ │ │ │ │ ├── app-button-split-export-class/
│ │ │ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ │ │ └── marko-tag.json
│ │ │ │ │ │ │ └── component-only/
│ │ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ ├── split-emit-multi-args/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── split-component/
│ │ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── tests.js
│ │ │ │ │ └── xss/
│ │ │ │ │ ├── components/
│ │ │ │ │ │ └── app-foo/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ └── index.marko
│ │ │ │ │ ├── marko.json
│ │ │ │ │ ├── template.marko
│ │ │ │ │ └── tests.js
│ │ │ │ └── index.test.js
│ │ │ ├── components-server/
│ │ │ │ ├── fixtures/
│ │ │ │ │ ├── cspNonce/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-simple/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── getRenderedWidgets/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── app-simple/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ └── scriptConcat/
│ │ │ │ │ ├── template.marko
│ │ │ │ │ └── test.js
│ │ │ │ └── index.test.js
│ │ │ ├── hot-reload/
│ │ │ │ ├── fixtures/
│ │ │ │ │ ├── load/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── initial-expected.html
│ │ │ │ │ │ ├── modified-expected.html
│ │ │ │ │ │ ├── reloaded-expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── require/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── initial-expected.html
│ │ │ │ │ │ ├── modified-expected.html
│ │ │ │ │ │ ├── reloaded-expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── require-custom-extension/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── initial-expected.html
│ │ │ │ │ │ ├── modified-expected.html
│ │ │ │ │ │ ├── reloaded-expected.html
│ │ │ │ │ │ ├── template.html
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── require-custom-multiple-extensions/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── initial-expected.html
│ │ │ │ │ │ ├── modified-expected.html
│ │ │ │ │ │ ├── reloaded-expected.html
│ │ │ │ │ │ ├── template.html
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── require-custom-without-period/
│ │ │ │ │ │ ├── .gitignore
│ │ │ │ │ │ ├── initial-expected.html
│ │ │ │ │ │ ├── modified-expected.html
│ │ │ │ │ │ ├── reloaded-expected.html
│ │ │ │ │ │ ├── template.html
│ │ │ │ │ │ └── test.js
│ │ │ │ │ └── template-export-component/
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── a/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ └── index.marko
│ │ │ │ │ ├── b/
│ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ └── index.marko
│ │ │ │ │ ├── initial-expected.html
│ │ │ │ │ ├── reloaded-expected.html
│ │ │ │ │ └── test.js
│ │ │ │ └── index.test.js
│ │ │ ├── marko-debug-babel-plugin/
│ │ │ │ ├── fixtures/
│ │ │ │ │ └── compiles/
│ │ │ │ │ ├── expected.js
│ │ │ │ │ ├── input.js
│ │ │ │ │ └── test.js
│ │ │ │ └── index.test.js
│ │ │ ├── markoc/
│ │ │ │ ├── babel-register.js
│ │ │ │ ├── fixtures/
│ │ │ │ │ ├── clean-dir/
│ │ │ │ │ │ ├── template1.marko
│ │ │ │ │ │ ├── template2.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── compile-dir/
│ │ │ │ │ │ ├── template1.marko
│ │ │ │ │ │ ├── template2.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── compile-dir-no-template/
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── multiple-dirs/
│ │ │ │ │ │ ├── a/
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── b/
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── excluded/
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── single-template/
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── single-template-write-version-comment/
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ └── usage/
│ │ │ │ │ └── test.js
│ │ │ │ └── index.test.js
│ │ │ ├── morphdom/
│ │ │ │ ├── fixtures/
│ │ │ │ │ ├── add-rearrange/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── add-rearrange-incompatible-keys/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── attr-value-empty-string/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── button-element-disabled/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── button-element-enabled/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── change-tagname/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── change-tagname-ids/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── data-table/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── data-table2/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── equal/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── id-change-tag-name/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── ids-nested/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── ids-nested-2/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── ids-nested-3/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── ids-nested-4/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── ids-nested-5/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── ids-nested-6/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── ids-nested-7/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── ids-prepend/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── incompatible-root-tag/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── incompatible-root-tag-with-keyed-child/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── input-element/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── input-element-disabled/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── input-element-enabled/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── keyed-incompatible/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── large/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── lengthen/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── one/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── reverse/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── reverse-ids/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── select-element/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── select-element-optgroup/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── shorten/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── simple/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── simple-div-one-to-one/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── simple-ids/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── simple-text-el/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── single-el-removal-first-keyed/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── single-el-removal-last-keyed/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── single-el-removal-middle-keyed/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── svg/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── svg-append/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── svg-append-new/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── svg-no-default-namespace/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── svg-xlink/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── swap-keyed/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── tag-to-text/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── tag-with-children-to-text/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── text-to-tag/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── text-to-text/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── textarea/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── todomvc/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ ├── todomvc2/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── from.html
│ │ │ │ │ │ └── to.html
│ │ │ │ │ └── two/
│ │ │ │ │ ├── expected.html
│ │ │ │ │ ├── from.html
│ │ │ │ │ └── to.html
│ │ │ │ └── index.test.js
│ │ │ ├── node-require/
│ │ │ │ └── index.test.js
│ │ │ ├── package.json
│ │ │ ├── render/
│ │ │ │ ├── fixtures/
│ │ │ │ │ ├── attr-boolean-dynamic/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attr-boolean-placeholder/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attr-boolean-static/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attr-empty/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attr-empty-dynamic/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attr-escape-xml/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attr-newline-escaped/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attr-number/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attr-placeholder-escaped-undefined/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attr-placeholder-unescaped-undefined/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attr-unquoted/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attr-value-number/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attr-value-obj/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attr-value-obj-custom-tag/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── tag.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attr-value-partial-string/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attributes-dynamic-custom-tag/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-hello/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attributes-dynamic-custom-tag-mixed/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-hello/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attributes-dynamic-xss/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-hello/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── attrs/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attrs-normalize-for-native-tag/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── custom-tag/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── attrs-with-render-body/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── custom-tag/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── autocomplete/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-hello/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── await-client-reorder/
│ │ │ │ │ │ ├── expected-events-vdom.json
│ │ │ │ │ │ ├── expected-events.json
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-client-reorder-cspnonce/
│ │ │ │ │ │ ├── expected-events-vdom.json
│ │ │ │ │ │ ├── expected-events.json
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-client-reorder-invoked-once/
│ │ │ │ │ │ ├── expected-events-vdom.json
│ │ │ │ │ │ ├── expected-events.json
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-client-reorder-mixed/
│ │ │ │ │ │ ├── expected-events-vdom.json
│ │ │ │ │ │ ├── expected-events.json
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-client-reorder-nested/
│ │ │ │ │ │ ├── expected-events-vdom.json
│ │ │ │ │ │ ├── expected-events.json
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-client-reorder-sync/
│ │ │ │ │ │ ├── expected-events.json
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── await-client-reorder-with-runtimeId/
│ │ │ │ │ │ ├── expected-events-vdom.json
│ │ │ │ │ │ ├── expected-events.json
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-error/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── await-error-empty-catch/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── await-error-no-catch/
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-error-rethrow-catch/
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-macros/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── await-no-update-content/
│ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-order-random/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── await-ordering/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── await-placeholder/
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-promise/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── await-render-error/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-render-error-bluebird/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-sync/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── await-timeout/
│ │ │ │ │ │ ├── expected-events.json
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── beginAsync/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── body-placeholder-literal/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── body-placeholder-literal-escaped/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── body-placeholder-literal-unescaped/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── body-placeholder-literal-unescaped-escaped/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── body-placeholder-literal2/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── circular-renderer/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ ├── test-circular-renderer-a/
│ │ │ │ │ │ │ │ ├── renderer.js
│ │ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ │ └── test-circular-renderer-b/
│ │ │ │ │ │ │ ├── renderer.js
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── circular-tags-no-write-to-disk/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── navigation-item/
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── circular-template/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ ├── test-circular-template-a/
│ │ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ │ └── test-circular-template-b/
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── class-attr-array/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── class-attr-object/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── class-attr-shorthand-plus-expression/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── class-attr-string/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── comments-preserve-ie-conditional/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── comments-remove/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── component-aria-key/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-file-export-class/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello/
│ │ │ │ │ │ │ ├── component.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-inline-style-important/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── component-label-for/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── component-safe-json/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── foo/
│ │ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ │ └── bar/
│ │ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── split/
│ │ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ └── split-child/
│ │ │ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── components-await/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── components-await-beginAsync/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── beginAsync/
│ │ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ │ └── hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── components-await-title/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── hello/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── layout.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── concise/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── concise-verbose/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── conditional-attributes/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── custom-tag/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-hello/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── custom-tag-as-template/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-template-as-tag/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── custom-tag-autodiscover/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-hello/
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── pages/
│ │ │ │ │ │ │ └── home/
│ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ └── test-home/
│ │ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test-home-renderer.js
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── custom-tag-autodiscover-repeated-names/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-hello/
│ │ │ │ │ │ │ └── test-hello.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── pages/
│ │ │ │ │ │ │ └── home/
│ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ └── test-home/
│ │ │ │ │ │ │ │ └── test-home.marko
│ │ │ │ │ │ │ └── home.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test-home-renderer.js
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── custom-tag-body/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-hello/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── custom-tag-components-file/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── bye.marko
│ │ │ │ │ │ │ └── hello.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── custom-tag-data-placeholders/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-hello/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── custom-tag-hyphen-attrs/
│ │ │ │ │ │ ├── custom-tag.js
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── custom-tag-open-tag-only/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── open-tag-only-tag.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── custom-tag-target-property/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-target-property/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── custom-tag-template-index/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-tag/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── custom-tag-with-directives/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-hello/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── data/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── declaration/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── default-attributes/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-default-attributes/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── div-self-closed/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── doctype/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── dtd/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── dynamic-attributes/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-dynamic-attributes/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── dynamic-attributes3/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-dynamic-attributes3/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── dynamic-split-component/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ ├── dynamic-non-split/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── dynamic-non-split-no-body/
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ ├── dynamic-split/
│ │ │ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ │ └── dynamic-split-no-body/
│ │ │ │ │ │ │ ├── component-browser.js
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── dynamic-tag-arguments/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── layout.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── dynamic-tag-dashed-attributes/
│ │ │ │ │ │ ├── dynamic.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── dynamic-tag-layout/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── layout.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── dynamic-tag-lazy-attributes/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── dynamic-tag-name/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── dynamic-tag-name-concise/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── dynamic-tag-object-class-style/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── dynamic-tag-template/
│ │ │ │ │ │ ├── dynamic-target.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── empty-close-tag/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── entities/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── escape-at-tag/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── child/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── escape-script/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── escape-style/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── escaped-dollar/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── flush-here-and-after-async-after/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── flush-here-and-after-async-before/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── flush-here-and-after-async-reverse/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── flush-here-and-after-sync/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── flush-here-and-after-with-body/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── child.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-array-index/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-attr/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-attr-separator/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-attr-separator-html/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-attr-separator-status-var/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-attr-status-var-string/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-if-attr/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-iterator/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-iterator-attr/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-native/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-props/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-props-attr/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-props-status-var/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-range/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-range-descending-step/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-range-from-to-expr/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-range-step-2/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-range-step-neg2/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-range-to-expr/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-tag/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-tag-array-expression/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-tag-block-scoped-key/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── for-tag-native/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-tag-separator/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-tag-separator-status-var/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── for-tag-status-var/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── global-data/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── global-runtime-id/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── hello-dynamic/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── hello-dynamic.marko.expected.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── hello-static/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── html/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── html-comment-tag/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── html-comment-tag-dynamic/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── html-entities-body/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── if/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── if-attr/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── if-concise/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── if-else/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── if-else-attr/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── if-else-concise/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── if-else-if/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── if-else-if-attr/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── if-else-if-else/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── if-else-if-else-attr/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── ignore-unrecognized-tag/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── img/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── import/
│ │ │ │ │ │ ├── bar.js
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── include-target.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-attr/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── include-target.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-body/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── include-target.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-body-empty/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── include-target.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-component/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── my-component/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── include-html-target.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-data/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── include-target.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-data-body/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── include-target.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-dynamic/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── include-target.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-html/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── include-html-target.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-hyphen-attrs/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── include-target.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-hyphen-attrs-multiple/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── include-target.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-layout/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── layout-default.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-layout-data/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── layout-default.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-layout-data-attrs/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── layout-default.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-layout-v3-compat/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── layout-default.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-renderBody/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-renderBody-data-and-attrs/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-renderBody-no-data/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── include-html-target.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-renderBody-string-arg/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── include-html-target.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-string/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-text/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── include-resource-target.txt
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── include-whitespace/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── include-target.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── inline-script/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── invoke/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── label-for/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── macro/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── macro-body/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── macro-boolean/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── macro-no-args/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tag-shorthand-complex-logic/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-message/
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tag-shorthand-complex-logic-repeated/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-message/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tag-shorthand-hyphens/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-message/
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tag-shorthand-hyphens-repeated/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-message/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tag-shorthand-simple/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-message/
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tag-shorthand-simple-conditional/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-message/
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tag-shorthand-simple-declared/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-message/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tag-shorthand-simple-repeated/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-message/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tag-shorthand-simple-repeated-conditional/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-message/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tag-with-existing-input/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test/
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tag-with-render-body-params/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test/
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tag-with-scriptlet/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test/
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tags/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-nested-tags-overlay/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ ├── renderer.js
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tags-concise/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-nested-tags-tabs/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ ├── renderer.js
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tags-deep/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-nested-tags-deep/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ ├── renderer.js
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tags-empty-body/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-nested-tags-tabs/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ ├── renderer.js
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tags-repeatable/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── fancy-table.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tags-repeated/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-nested-tags-tabs/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ ├── renderer.js
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tags-repeated-parent/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-nested-tags-overlay/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ ├── renderer.js
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tags-repeated-with-default-render-body/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-nested-tags-tabs/
│ │ │ │ │ │ │ ├── index.marko
│ │ │ │ │ │ │ └── marko-tag.json
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── nested-tags-self-closing/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-nested-tags-tabs/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ ├── renderer.js
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── open-tag-only/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── open-tag-only-renderer/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── renderer.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── paren-grouping/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── pattern-attr/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── pattern-attr-runtime/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── placeholders-body-expressions/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── preserveWhitespace-global/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── preserveWhitespace-load-option/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── regexp-attr/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── renderer-dir-main.js/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── renderer-index.js/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── renderer/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── require/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test-helpers.js
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── reserved-words/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── my-custom-tag.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── scanned-tags/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ ├── scanned-a/
│ │ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ │ ├── scanned-b/
│ │ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ │ ├── scanned-c/
│ │ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ │ ├── scanned-d/
│ │ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ │ ├── scanned-e/
│ │ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ │ ├── scanned-f/
│ │ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ │ └── renderer.js
│ │ │ │ │ │ │ ├── scanned-g/
│ │ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ │ └── scanned-h/
│ │ │ │ │ │ │ └── index.js
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── script/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── script-escaped-placeholder/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── script-json-stringify/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── script-string-literal-placeholder/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── script-tag-entities/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── self-closing-dynamic/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── shorthand-class-merge/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── shorthand-class-merge2/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── shorthand-class-plus-class-obj/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── shorthand-classes-many-classes/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── shorthand-div-id/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── shorthand-div-id-dynamic/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── shorthand-div.foo/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── shorthand-id-and-classes/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── shorthand-verbose/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── simple/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── simple-conditionals/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── space-around-equal-sign-for-attr/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── space-in-complex-attr-value/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── spread-attribute-class-style-html-tag/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── spread-attribute-custom-tag/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-tag/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── spread-attribute-function-object/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── spread-attribute-html-tag/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── spread-attribute-literal/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── spread-attribute-no-mutate/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── spread-attribute-order-custom-tag/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-tag/
│ │ │ │ │ │ │ └── index.marko
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── spread-attribute-order-html-tag/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── spread-attribute-undefined/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── static-trees/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── static-var-complex/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── string-expressions/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── style-attr-array-mixed/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── style-attr-object/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── style-attr-object-units/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── style-attr-string/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── style-attr-string-dynamic/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── style-tag-dynamic-text/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── svg/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── syntax-concise/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tabs/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ ├── renderer.js
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── syntax-mixed/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tabs/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ ├── renderer.js
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── syntax-simple-concise/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── syntax-simple-mixed/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── syntax-simple-verbose/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── syntax-verbose/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tabs/
│ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ ├── renderer.js
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── tag-empty/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── taglib-imports-nested/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── nested-import/
│ │ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ │ ├── list/
│ │ │ │ │ │ │ │ │ ├── icon-list/
│ │ │ │ │ │ │ │ │ │ ├── marko-tag.json
│ │ │ │ │ │ │ │ │ │ ├── renderer.js
│ │ │ │ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ │ │ │ └── marko.json
│ │ │ │ │ │ │ │ └── marko.json
│ │ │ │ │ │ │ └── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── taglib-imports-package-json/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── tags-dir-null/
│ │ │ │ │ │ ├── components/
│ │ │ │ │ │ │ └── test-hello/
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── template-tag-dynamic-attributes/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── marko.json
│ │ │ │ │ │ ├── tags/
│ │ │ │ │ │ │ └── test-template-tag-dynamic-attributes/
│ │ │ │ │ │ │ └── template.marko
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── text-replacement/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── toHTML/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── toString-object/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── unary-expression/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── unless-else/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── var/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── var-assign/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── var-new-Date/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── var-tag-commas/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── variable-id-root-node/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── while-attr/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── while-tag/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── whitespace/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── whitespace-contentplaceholder-literal-string/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── whitespace-div/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── whitespace-inline-elements/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── whitespace-marko-preserve-whitespace-attr/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── whitespace-normalize-inner-whitespace/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── whitespace-normalize-inner-whitespace-concise/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── whitespace-normalize-inner-whitespace2/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── whitespace-pre/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── whitespace-pre-code/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── whitespace-script/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ ├── whitespace-textarea/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ ├── test.js
│ │ │ │ │ │ └── vdom-expected.html
│ │ │ │ │ └── xml-escaping/
│ │ │ │ │ ├── expected.html
│ │ │ │ │ ├── template.marko
│ │ │ │ │ ├── test.js
│ │ │ │ │ └── vdom-expected.html
│ │ │ │ ├── fixtures-async-callback/
│ │ │ │ │ ├── await-arg/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-args/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-args-merge/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-client-reorder/
│ │ │ │ │ │ ├── expected-events-vdom.json
│ │ │ │ │ │ ├── expected-events.json
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-client-reorder-cspnonce/
│ │ │ │ │ │ ├── expected-events-vdom.json
│ │ │ │ │ │ ├── expected-events.json
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-client-reorder-invoked-once/
│ │ │ │ │ │ ├── expected-events-vdom.json
│ │ │ │ │ │ ├── expected-events.json
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-client-reorder-mixed/
│ │ │ │ │ │ ├── expected-events-vdom.json
│ │ │ │ │ │ ├── expected-events.json
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-client-reorder-nested/
│ │ │ │ │ │ ├── expected-events-vdom.json
│ │ │ │ │ │ ├── expected-events.json
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-client-reorder-sync/
│ │ │ │ │ │ ├── expected-events.json
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-data-provider-method/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-data-providers/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-error/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-error-message-attr/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-function-data-provider-callback/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-function-data-provider-return-promise/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-function-data-provider-sync/
│ │ │ │ │ │ ├── expected.html
│ │ │ │ │ │ ├── template.marko
│ │ │ │ │ │ └── test.js
│ │ │ │ │ ├── await-out-of-order-with-in-or
================================================
FILE CONTENTS
================================================
================================================
FILE: .browserslistrc
================================================
extends @ebay/browserslist-config
================================================
FILE: .c8rc.json
================================================
{
"all": true,
"excludeAfterRemap": true,
"parserPlugins": ["objectRestSpread", "typescript"],
"reporter": ["text-summary", "lcov"],
"include": [
"packages/*/src/**/*.js",
"packages/*/src/**/*.ts",
"packages/*/src/**/*.marko"
],
"exclude": [
"**/__tests__",
"packages/runtime-tags/src/html/reorder-runtime.ts",
"**/*.d.ts"
]
}
================================================
FILE: .changeset/README.md
================================================
# Changesets
Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
with multi-package repos, or single-package repos to help you version and publish your code. You can
find the full documentation for it [in our repository](https://github.com/changesets/changesets)
We have a quick list of common questions to get you started engaging with this project in
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
================================================
FILE: .changeset/config.json
================================================
{
"$schema": "https://unpkg.com/@changesets/config@1.7.0/schema.json",
"changelog": ["@changesets/changelog-github", { "repo": "marko-js/marko" }],
"___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": {
"onlyUpdatePeerDependentsWhenOutOfRange": true
},
"updateInternalDependencies": "patch",
"baseBranch": "main",
"access": "public",
"commit": false,
"linked": [],
"ignore": [],
"fixed": []
}
================================================
FILE: .gitattributes
================================================
package-lock.json -diff
packages/runtime-class/src/node_modules/** linguist-generated=false
================================================
FILE: .github/CODE_OF_CONDUCT.md
================================================
# Code of Conduct
This project adheres to the [eBay Code of Conduct](https://github.com/eBay/.github/blob/main/CODE_OF_CONDUCT.md).
By participating in this project you agree to abide by its terms.
- Be friendly and patient.
- Be welcoming: We strive to be a community that welcomes and supports people of all backgrounds and identities. This includes, but is not limited to members of any race, ethnicity, culture, national origin, color, immigration status, social and economic class, educational level, sex, sexual orientation, gender identity and expression, age, size, family status, political belief, religion, and mental and physical ability.
- Be considerate: Your work will be used by other people, and you in turn will depend on the work of others. Any decision you take will affect users and colleagues, and you should take those consequences into account when making decisions. Remember that we’re a world-wide community, so you might not be communicating in someone else’s primary language.
- Be respectful: Not all of us will agree all the time, but disagreement is no excuse for poor behavior and poor manners. We might all experience some frustration now and then, but we cannot allow that frustration to turn into a personal attack. It’s important to remember that a community where people feel uncomfortable or threatened is not a productive one.
- Be careful in the words that we choose: we are a community of professionals, and we conduct ourselves professionally.
- Be kind to others. Do not insult or put down other participants. Harassment and other exclusionary behavior aren’t acceptable.
- Try to understand why we disagree: Disagreements, both social and technical, happen all the time. It is important that we resolve disagreements and differing views constructively.
- Remember that we’re different. The strength of our community comes from its diversity, people from a wide range of backgrounds. Different people have different perspectives on issues. Being unable to understand why someone holds a viewpoint doesn’t mean that they’re wrong. Don’t forget that it is human to err and blaming each other doesn’t get us anywhere. Instead, focus on helping to resolve issues and learning from mistakes.
Please visit https://github.com/eBay/.github/blob/main/CODE_OF_CONDUCT.md for the full code of conduct.
================================================
FILE: .github/CONTRIBUTING.md
================================================
# Contribution tips and guidelines
:+1::tada: We're excited you want to contribute! Read on! :tada::+1:
[Questions](#i-just-have-a-question) •
[Pull requests](#pull-requests-are-always-welcome) •
[Tackling issues](#tackling-an-existing-issue) •
[Reporting bugs](#reporting-bugs-and-other-issues) •
[Labels](#labels)
## I just have a question
Before you ask, check our [existing questions](https://github.com/marko-js/marko/issues?page=2&q=is%3Aissue+label%3Atype%3Aquestion&utf8=%E2%9C%93) to see if your question has already been answered. If not, go ahead an open an issue or join us in [Discord](https://discord.gg/RFGxYGs) to ask a question.
Please be sure to use [markdown code blocks](https://help.github.com/articles/creating-and-highlighting-code-blocks/) when posting code on GitHub or Discord:
````
```marko
<div>some marko ${code}</div>
```
```js
const some = js.code;
```
````
## Pull requests are always welcome
Not sure if that typo is worth a pull request? Found a bug and know how to fix it? Do it! We will appreciate it. Any significant improvement should be documented as [a GitHub issue](https://github.com/marko-js/marko/issues) before anybody starts working on it.
We are always thrilled to receive pull requests. We do our best to process them quickly. If your pull request is not accepted on the first try, don't get discouraged! We'll work with you to come to an acceptable solution.
Prior to merging your PR, you will need to sign the [Open JS Foundation CLA](https://easycla.lfx.linuxfoundation.org/). It's pretty straight-forward and only takes a minute. You'll also be prompted to sign the CLA automatically when opening a PR.
> **TIP:** If you're new to GitHub or open source you can check out this [free course](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github) on how to contribute to an open source project.
### Running tests
Before submitting your PR, make sure that all new and previous tests pass and that [coverage](https://codecov.io/gh/marko-js/marko) has not decreased:
```
npm run @ci:test
# to view the coverage report
npm run report
```
While developing you can run a single test group and use [grep](https://mochajs.org/#-g---grep-pattern) to filter the tests:
```
npm test -- --grep=lifecycle
```
### Adding tests
Marko makes use of directory based test suites. Take a look at the `render` test suite:
<pre>
<a href="../test/">test/</a>
⤷ <a href="../test/render/">render/</a>
⤷ <a href="../test/render/fixtures/">fixtures/</a>
⤷ attrs/
⤷ <a href="../test/render/fixtures/for-tag/">for-tag/</a>
⤷ <a href="../test/render/fixtures/for-tag/expected.html">expected.html</a>
⤷ <a href="../test/render/fixtures/for-tag/template.marko">template.marko</a>
⤷ <a href="../test/render/fixtures/for-tag/test.js">test.js</a>
⤷ nested-tags/
⤷ while-tag/
⤷ <a href="../test/render/html.test.js">html.test.js</a>
</pre>
The `html.test.js` file will run and read all the directories under `render/fixtures` and for each directory (`attrs`, `for-tag`, etc.) it will run `test.js`, render `template.marko` and assert that it is equivalent to the content of `expected.html`.
To add a new test, you'll find the appropriate test suite, copy a fixture, and modify it to add the new test.
#### Skipping a test
A few of the tests suites use the same fixtures for multiple test scenarios. For example, the `component-browser` tests run once rendering the component in a browser environment and a second time rendering in a server environment, then hydrating in the browser.
For some tests, it might be necessary to skip the test in one of these scenarios. This is done by exporting a [`skip_hydrate`](https://github.com/marko-js/marko/blob/e3df4936c83a5ef419e8186df14ffc6012fcbdcc/test/components-browser/fixtures/implicit-component/test.js#L10) (or similiarly named) property from the fixture. The value of the property should be a string explaining why the test is skipped.
#### Adding a failing test case
If you've discovered an issue and are able to reproduce it, but don't have a fix, consider submitting a PR with a failing test case. You can mark a fixture as expected to fail by appending exporting a [`fails`](https://github.com/marko-js/marko/blob/0833ada47eeb5c833a11ef01fcd53ae39b0b7491/test/render/fixtures/spread-attribute-function-object/test.js#L1) property from the fixture. The value of the `fails` property should be a string with the issue number. Upon merging a failing test case, a maintainer will update the corresponding issue to add the [`has failing test`](https://github.com/marko-js/marko/labels/has%20failing%20test) label.
In the case that a fixture is used in multiple test scenarios, you can mark the test as failing in a specific scenario by exporting a [`fails_hydrate`](https://github.com/marko-js/marko/blob/e3df4936c83a5ef419e8186df14ffc6012fcbdcc/test/components-browser/fixtures-deprecated/widget-conditional/test.js#L19) (or similarly named) property from the fixture.
Expected failures won't cause [Travis CI](https://travis-ci.org/marko-js/marko) to report a error, but document that there is an issue and give others a starting point for fixing the problem.
### Debugging tests
If you need to dig a bit deeper into a failing test, use the `--inspect-brk` flag, open Chrome DevTools, and click on the green nodejs icon (<img height="16" src="https://user-images.githubusercontent.com/1958812/37050480-d53e4276-2128-11e8-8c7a-f5d842956c98.png"/>) to start debugging. Learn more about [debugging node](https://www.youtube.com/watch?v=Xb_0awoShR8&t=103s) from this video.
```
npm test -- --grep=test-name --inspect-brk
```
In addition to [setting breakpoints](https://developers.google.com/web/tools/chrome-devtools/javascript/breakpoints), you can also add [`debugger;`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/debugger) statements in both your JavaScript files and Marko templates:
```marko
$ debugger;
<div>Hello ${input.name}!</div>
```
### Updating snapshots
A number of the test suites make use snapshot comparisons. For example, the `render` tests compare the rendered html against a stored snapshot. Similarly, the `compiler` tests compare the generated JavaScript module againt a stored snapshot. Any changes compared to the snapshot should be looked at closely, but there are some cases where it is fine that the output has changed and the snapshot needs to be updated.
To update a snapshot, you can copy the contents from the `actual` file to the `expected` file in the fixture directory. You can also use the `UPDATE_EXPECTATIONS` env variable to cause the test runner to update the `expected` file for all currently failing tests in a suite:
```
UPDATE_EXPECTATIONS=1 npm test
```
## Tackling an existing issue
Comment on the issue and let us know you'd like to tackle it. If for some reason you aren't going to be able to complete the work, let us know as soon as you can so we can open it up for another developer to work on.
Here's some to get started with:
- [good first issue](https://github.com/marko-js/marko/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22): great for new contributors
- [help wanted](https://github.com/marko-js/marko/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) issues: won't be tackled in the near future by the maintainers... we need your help!
- [unassigned](https://github.com/marko-js/marko/issues?utf8=%E2%9C%93&q=is%3Aissue%20is%3Aopen%20no%3Aassignee%20) issues: open issues that no one has claimed... yet
- [has failing test](https://github.com/marko-js/marko/labels/has%20failing%20test) issues: open issues that already have a failing test case in the repo. make it pass!
## Reporting bugs and other issues
A great way to contribute to the project is to send a detailed report when you encounter an issue. Even better: submit a PR with a failing test case ([see how](#adding-a-failing-test-case)).
Check that [our issue database](https://github.com/marko-js/marko/issues) doesn't already include that problem or suggestion before submitting an issue. If you find a match, you can use the "subscribe" button to get notified on updates. Rather than leaving a "+1" or "I have this too" comment, you can add a [reaction](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments) to let us know that this is also affecting you without cluttering the conversation. However, if you have ways to reproduce the issue or have additional information that may help resolving the issue, please leave a comment.
We have an [ISSUE_TEMPLATE](ISSUE_TEMPLATE.md) that will populate your textarea when you go to open an issue. Use the relevant section and remove the rest.
Please provide as much detail as possible.
### Reporting security issues
If you discover a security issue, please **DO NOT** file a public issue, instead **privately** send your report to one of the members with the `core team` role in the [Discord](https://discord.gg/RFGxYGs).
Security reports are greatly appreciated and we will publicly thank you for it. We currently do not offer a paid security bounty program.
# Labels
Once you post an issue, a maintainer will add one or more labels to it. Below is a guideline for the maintainers and anyone else who is interested in what the various labels mean.
### Type







Every issue should be assigned one of these.
- **bug**: A bug report
- **unverified-bug**: A bug report that has not been verified
- **feature**: A feature request
- **question**: A question about how to do something in Marko
- **community**: Related to community building, improving the contribution process, etc.
- **tech debt**: Related to refactoring code, test structure, etc.
- **docs**: Related to documentation/website
### Scope






What part of the Marko stack does this issue apply to? In most cases there should only be one of these.
- **parser**: Relates to [`htmljs-parser`](https://github.com/marko-js/htmljs-parser)
- **compiler**: Relates to the [compiler](../src/compiler) (server only)
- **runtime**: Relates to the [runtime](../src/runtime) (isomorphic/universal)
- **core-taglib**: Relates to [custom tags](../src/taglib) that ship with Marko
- **components**: Relates to [components](../src/components)
- **tools**: Relates to editor plugins, commandline tools, etc.
### Status



In many cases, additional _actions_ should be taken when applying one of these.
- **backlog**: Tasks planned to be worked on
- **in progress**: This is currently being worked on.
- **needs review**: This issue needs to be followed up on.
### Reason closed






- **resolved**: The question was answered, the bug was fixed, or the feature was implemented.
- **duplicate**: Someone has already posted the same or a very similar issue. A comment should be added that references the original issue.
- **declined**: This feature will not be implemented.
- **not a bug**: This is not a bug, but either user error or intended behavior.
- **inactivity**: There was not enough info to reproduce the bug or not enough interest in the feature to hash out an implementation plan and the conversation has stalled.
- **no issue**: This wasn't so much an issue as a comment
### Other





- **good first issue**: Small tasks that would be good for first time contributors.
- **help wanted**: Not on the roadmap, but we'd love for someone in the community to tackle it.
- **blocked**: Cannot be completed until something else happens first. This should be described in a comment with a link to the blocking issue.
- **needs more info**: The original poster needs to provide more information before action can be taken.
- **user land**: Something that probably won't be added to core, but could be implemented/proved out as a separate module.
================================================
FILE: .github/ISSUE_TEMPLATE/Bug_report.md
================================================
---
name: "\U0001F41BBug report"
about: Something isn't working right
title: ""
labels: "type:unverified bug"
---
### Marko Version: x.x.x
<!--- Provide the exact version of marko in which you see the bug. You can run `npm ls marko` to see this. -->
### Details
<!--- Provide a more detailed introduction to the issue itself, and why you consider it to be a bug. How has this bug affected you? What were you trying to accomplish? -->
### Expected Behavior
<!--- Tell us what should happen -->
### Actual Behavior
<!--- Tell us what happens instead -->
### Possible Fix
<!--- Not obligatory, but suggest a fix or reason for the bug -->
<details><summary>Additional Info</summary>
### Your Environment
<!-- Include as many relevant details about the environment you experienced the bug in -->
- Environment name and version (e.g. Chrome 39, node.js 5.4):
- Operating System and version (desktop or mobile):
- Link to your project:
### Steps to Reproduce
<!-- Provide a link to a live example -->
<!-- or an unambiguous set of steps to reproduce this bug -->
<!-- include code to reproduce, if relevant -->
1. first...
2.
3.
4.
### Stack Trace
<!-- If an error is thrown, provide the stack trace here -->
</details>
================================================
FILE: .github/ISSUE_TEMPLATE/Feature_request.md
================================================
---
name: "\U0001F680Feature request"
about: Suggest an idea for this project
title: ""
labels: "type:feature"
---
### Description
<!--- Provide a detailed description of the change or addition you are proposing -->
### Why
<!--- Why is this change important to you? How would you use it? -->
<!--- How can it benefit other users? -->
### Possible Implementation & Open Questions
<!--- Not obligatory, but suggest an idea for implementing addition or change -->
<!--- What still needs to be discussed -->
### Is this something you're interested in working on?
<!--- Yes or no -->
================================================
FILE: .github/ISSUE_TEMPLATE/Support_question.md
================================================
---
name: "\U00002753Support Question"
about: If you have a question, please check out our Discord or StackOverflow!
title: ""
labels: "type:question"
---
<!--
We primarily use GitHub as an issue tracker; for usage and support questions, please check out these resources below. Thanks!
* Website: https://markojs.com/
* Chat: https://discord.gg/RFGxYGs
* StackOverflow: https://stackoverflow.com/questions/tagged/marko using the tag `marko`
-->
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--- Provide a general summary of your changes in the Title above -->
## Description
<!--- Describe your changes in detail -->
<!--- Why is this change required? What problem does it solve? -->
<!--- If it fixes an open issue, please link to the issue here. -->
## Checklist:
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [ ] I have read the **CONTRIBUTING** document and have signed (or will sign) the CLA.
- [ ] I have updated/added documentation affected by my changes.
- [ ] I have added tests to cover my changes.
================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on:
pull_request:
types: [opened, synchronize]
push:
branches: [main, v3, v4]
concurrency:
group: "${{ github.workflow }}-${{ github.event_name == 'pull_request_target' && github.head_ref || github.ref }}"
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Use node
uses: actions/setup-node@v6
with:
node-version: 24
cache: npm
- name: Install dependencies
run: npm ci
- name: Build
run: npm run @ci:build
- name: Lint Code
run: npm run @ci:lint
test:
runs-on: ubuntu-latest
name: "test: node@${{ matrix.node }}"
strategy:
fail-fast: false
matrix:
node: [20, 22, 24]
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Use node@${{ matrix.node }}
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node }}
cache: npm
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm run @ci:test
- name: Report code coverage
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
release:
runs-on: ubuntu-latest
needs: [build, test]
if: ${{ github.repository_owner == 'marko-js' && github.event_name == 'push' }}
permissions:
id-token: write
contents: write
pull-requests: write
steps:
- name: Checkout code
uses: actions/checkout@v6
- name: Setup node
uses: actions/setup-node@v6
with:
node-version: 24
cache: npm
- name: Install dependencies
run: npm ci
- name: Release
id: changesets
uses: changesets/action@v1
with:
version: npm run @ci:version
publish: npm run @ci:release
commit: "[ci] release"
title: "[ci] release"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Release Alias
if: ${{ contains(steps.changesets.outputs.publishedPackages, '"@marko/runtime-tags"') }}
run: npm run @ci:release-alias
================================================
FILE: .gitignore
================================================
# Build
dist
*.marko.js
*actual*
*.tsbuildinfo
### Node ###
# Logs
logs
*.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Dependency directories
node_modules
!packages/runtime-class/src/node_modules
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn
.yarn-integrity
yarn.lock
# dotenv environment variables file
.env
.env.test
### Git ###
# Created by git for backups. To disable backups in Git:
# $ git config --global mergetool.keepBackup false
*.orig
# Created by git when using merge tools for conflicts
*.BACKUP.*
*.BASE.*
*.LOCAL.*
*.REMOTE.*
*_BACKUP_*.txt
*_BASE_*.txt
*_LOCAL_*.txt
*_REMOTE_*.txt
### OS ###
# Linux
*~
.fuse_hidden*
.directory
.Trash-*
.nfs*
# Mac
.DS_Store
.AppleDouble
.LSOverride
._*
Icon
# Windows
*[Tt]humbs*.db*
[Dd]esktop.ini
*.stackdump
*.lnk
### EDITOR ###
# VisualStudioCode
.vscode
.history
*.sublime*
# JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
*.iml
*.ipr
*.iws
modules.xml
.idea
# SublimeText
*.cache
*.sublime-*
Package Control.*
oscrypto-ca-bundle.crt
# TextMate
*.tmproj
*.tmproject
tmtags
# Vim
*.swp
*.vim
.netrwhist
================================================
FILE: .husky/.gitignore
================================================
_
================================================
FILE: .husky/pre-commit
================================================
npm exec -- lint-staged && npm run build && npm run build:sizes && git add .sizes.json && git add .sizes
================================================
FILE: .lintstagedrc.json
================================================
{
"$schema": "https://json.schemastore.org/lintstagedrc.schema.json",
"*.{ts,js}": ["eslint --fix", "prettier --write --with-node-modules"],
"*.{json,md,css}": ["prettier --write --with-node-modules"]
}
================================================
FILE: .mocharc.json
================================================
{
"timeout": 5000,
"enable-source-maps": true,
"require": ["~ts", "mocha-snap"],
"spec": ["packages/*/@(src|test)/**/*.test.@(js|ts)"],
"watchFiles": ["src/**/*.@(js|ts|marko)", "!**/__snapshots__/**"]
}
================================================
FILE: .prettierignore
================================================
__snapshots__
!packages/runtime-class/src/node_modules
.cache
.nvm
.sizes
.sizes.json
.vscode
*actual*
*expected*
~*
CHANGELOG.md
coverage
dist
**/fixtures/*/*
!**/fixtures/*/*.ts
input.*
node_modules
package-lock.json
snapshots
================================================
FILE: .prettierrc.json
================================================
{
"$schema": "https://json.schemastore.org/prettierrc",
"plugins": ["prettier-plugin-packagejson"]
}
================================================
FILE: .sizes/comments.csr/entry.js
================================================
// size: 694 (min) 380 (brotli)
const $if_content__comment_comments = _if_closure(4, 0, ($scope) =>
$input_comments$1($scope.a, $scope._.i),
),
$if_content__setup = ($scope) => {
($if_content__comment_comments._($scope),
$if_content__id._($scope),
$scope.a);
},
$if_content__id = _if_closure(4, 0, ($scope) =>
$input_path$1($scope.a, $scope._.l),
),
$for_content__id = _const(11, ($scope) => {
(_attr($scope.a, "id", $scope.l), $if_content__id($scope));
}),
$for_content__input_path = _for_closure(0, ($scope) =>
$for_content__id($scope, `${$scope._.e || "c"}-${$scope.M}`),
),
$for_content__open__script = _script("a0", ($scope) =>
_on($scope.c, "click", function () {
$for_content__open($scope, !$scope.m);
}),
),
$for_content__open = _let(12, ($scope) => {
(_attr($scope.a, "hidden", !$scope.m),
_text($scope.d, $scope.m ? "[-]" : "[+]"),
$for_content__open__script($scope));
}),
$for_content__setup = ($scope) => {
($for_content__input_path._($scope), $for_content__open($scope, !0));
},
$for_content__if = _if(4, "<ul></ul>", "/ b&", $if_content__setup),
$for_content__comment_comments = _const(8, ($scope) => {
($for_content__if($scope, $scope.i ? 0 : 1),
$if_content__comment_comments($scope));
}),
$for_content__$params = ($scope, $params2) =>
$for_content__comment($scope, $params2[0]),
$for_content__comment = ($scope, comment) => {
((($scope, comment_text) => {
_text($scope.b, comment_text);
})($scope, comment?.text),
$for_content__comment_comments($scope, comment?.comments));
},
$for = _for_of(
0,
"<li><span> </span><button> </button><!></li>",
" E l D l%l",
$for_content__setup,
$for_content__$params,
),
$input_comments$1 = ($scope, input_comments) =>
$for($scope, [input_comments]),
$input_path$1 = _const(4, $for_content__input_path);
function $setup($scope) {
$scope.a;
}
_template("b", "<ul></ul>", "/ b&", $setup, ($scope, input) => {
((($scope, input_comments) => {
$input_comments$1($scope.a, input_comments);
})($scope, input.comments),
(($scope, input_path) => {
$input_path$1($scope.a, input_path);
})($scope, input.path));
}).mount();
================================================
FILE: .sizes/comments.ssr/entry.js
================================================
// size: 130 (min) 110 (brotli)
const $for_content__open__script = _script("a0", ($scope) =>
_on($scope.c, "click", function () {
$for_content__open($scope, !$scope.m);
}),
),
$for_content__open = _let(12, ($scope) => {
(_attr($scope.a, "hidden", !$scope.m),
_text($scope.d, $scope.m ? "[-]" : "[+]"),
$for_content__open__script($scope));
});
init();
================================================
FILE: .sizes/counter.csr/entry.js
================================================
// size: 173 (min) 148 (brotli)
const $clickCount__script = _script("a0", ($scope) =>
_on($scope.a, "click", function () {
$clickCount($scope, $scope.c + 1);
}),
),
$clickCount = _let(2, ($scope) => {
(_text($scope.b, $scope.c), $clickCount__script($scope));
});
function $setup($scope) {
$clickCount($scope, 0);
}
_template("a", "<div><button> </button></div>", "D D m", $setup).mount();
================================================
FILE: .sizes/counter.ssr/entry.js
================================================
// size: 96 (min) 100 (brotli)
const $clickCount__script = _script("a0", ($scope) =>
_on($scope.a, "click", function () {
$clickCount($scope, $scope.c + 1);
}),
),
$clickCount = _let(2, ($scope) => {
(_text($scope.b, $scope.c), $clickCount__script($scope));
});
init();
================================================
FILE: .sizes/dom.js
================================================
// size: 21238 (min) 7981 (brotli)
var empty = [],
rest = Symbol();
function attrTag(attrs) {
return (
(attrs[Symbol.iterator] = attrTagIterator),
(attrs[rest] = empty),
attrs
);
}
function attrTags(first, attrs) {
return first
? (first[rest] === empty
? (first[rest] = [attrs])
: first[rest].push(attrs),
first)
: attrTag(attrs);
}
function* attrTagIterator() {
(yield this, yield* this[rest]);
}
function _assert_hoist(value) {}
function _assert_init(scope, accessor) {
return scope[accessor];
}
function forIn(obj, cb) {
for (let key in obj) cb(key, obj[key]);
}
function forOf(list, cb) {
if (list) {
let i = 0;
for (let item of list) cb(item, i++);
}
}
function forTo(to, from, step, cb) {
let start = from || 0,
delta = step || 1;
for (let steps = (to - start) / delta, i = 0; i <= steps; i++)
cb(start + i * delta);
}
function forUntil(until, from, step, cb) {
let start = from || 0,
delta = step || 1;
for (let steps = (until - start) / delta, i = 0; i < steps; i++)
cb(start + i * delta);
}
function _call(fn, v) {
return (fn(v), v);
}
function stringifyClassObject(name, value) {
return value ? name : "";
}
function stringifyStyleObject(name, value) {
return value || 0 === value ? name + ":" + value : "";
}
function toDelimitedString(val, delimiter, stringify) {
let part,
str = "",
sep = "";
if (val)
if ("object" != typeof val) str += val;
else if (Array.isArray(val))
for (let v of val)
((part = toDelimitedString(v, delimiter, stringify)),
part && ((str += sep + part), (sep = delimiter)));
else
for (let name in val)
((part = stringify(name, val[name])),
part && ((str += sep + part), (sep = delimiter)));
return str;
}
function isEventHandler(name) {
return /^on[A-Z-]/.test(name);
}
function getEventHandlerName(name) {
return "-" === name[2] ? name.slice(3) : name.slice(2).toLowerCase();
}
function normalizeDynamicRenderer(value) {
if (value) {
if ("string" == typeof value) return value;
let normalized = value.content || value.default || value;
if ("g" in normalized) return normalized;
}
}
var decodeAccessor = (num) =>
(num + (num < 26 ? 10 : num < 962 ? 334 : 11998)).toString(36);
function toArray(opt) {
return opt ? (Array.isArray(opt) ? opt : [opt]) : [];
}
function push(opt, item) {
return opt
? Array.isArray(opt)
? (opt.push(item), opt)
: [opt, item]
: item;
}
var defaultDelegator = createDelegator();
function _on(element, type, handler) {
(void 0 === element["$" + type] &&
defaultDelegator(element, type, handleDelegated),
(element["$" + type] = handler || null));
}
function createDelegator() {
let kEvents = Symbol();
return function (node, type, handler) {
((node = node.getRootNode())[kEvents] ||= {})[type] ||=
(node.addEventListener(type, handler, !0), 1);
};
}
function handleDelegated(ev) {
let target = !rendering && ev.target;
for (; target; )
(target["$" + ev.type]?.(ev, target),
(target = ev.bubbles && !ev.cancelBubble && target.parentNode));
}
function stripSpacesAndPunctuation(str) {
return str.replace(/[^\p{L}\p{N}]/gu, "");
}
var parsers = {};
function parseHTML(html, ns) {
let parser = (parsers[ns] ||= document.createElementNS(ns, "template"));
return ((parser.innerHTML = html), parser.content || parser);
}
var isScheduled,
channel,
nextScopeId = 1e6;
function createScope($global, closestBranch) {
let scope = { L: nextScopeId++, H: 1, F: closestBranch, $: $global };
return (pendingScopes.push(scope), scope);
}
function skipScope() {
return nextScopeId++;
}
function findBranchWithKey(scope, key) {
let branch = scope.F;
for (; branch && !branch[key]; ) branch = branch.N;
return branch;
}
function destroyBranch(branch) {
(branch.N?.D?.delete(branch), destroyNestedScopes(branch));
}
function destroyScope(scope) {
scope.I || (destroyNestedScopes(scope), resetControllers(scope));
}
function destroyNestedScopes(scope) {
((scope.I = 1),
scope.D?.forEach(destroyNestedScopes),
scope.B?.forEach(resetControllers));
}
function resetControllers(scope) {
for (let id in scope.A) $signalReset(scope, id);
}
function removeAndDestroyBranch(branch) {
(destroyBranch(branch), removeChildNodes(branch.S, branch.K));
}
function insertBranchBefore(branch, parentNode, nextSibling) {
insertChildNodes(parentNode, nextSibling, branch.S, branch.K);
}
function tempDetachBranch(branch) {
let fragment = new DocumentFragment();
((fragment.namespaceURI = branch.S.parentNode.namespaceURI),
insertChildNodes(fragment, null, branch.S, branch.K));
}
function schedule() {
isScheduled || ((isScheduled = 1), queueMicrotask(flushAndWaitFrame));
}
function flushAndWaitFrame() {
(run(), requestAnimationFrame(triggerMacroTask));
}
function triggerMacroTask() {
(channel ||
((channel = new MessageChannel()).port1.onmessage = () => {
((isScheduled = 0), run());
}),
channel.port2.postMessage(0));
}
function _let(id, fn) {
let valueAccessor = decodeAccessor(id),
valueChangeAccessor = "M" + valueAccessor;
return (scope, value, valueChange) => (
rendering
? (((scope[valueChangeAccessor] = valueChange) &&
scope[valueAccessor] !== value) ||
scope.H) &&
((scope[valueAccessor] = value), fn?.(scope))
: scope[valueChangeAccessor]
? scope[valueChangeAccessor](value)
: scope[valueAccessor] !== (scope[valueAccessor] = value) &&
fn &&
(schedule(), queueRender(scope, fn, id)),
value
);
}
function _const(valueAccessor, fn) {
return (
(valueAccessor = decodeAccessor(valueAccessor)),
(scope, value) => {
(!(valueAccessor in scope) || scope[valueAccessor] !== value) &&
((scope[valueAccessor] = value), fn?.(scope));
}
);
}
function _or(id, fn, defaultPending = 1, scopeIdAccessor = "L") {
return (
"L" !== scopeIdAccessor &&
(scopeIdAccessor = decodeAccessor(scopeIdAccessor)),
(scope) => {
scope.H
? id in scope
? --scope[id] || fn(scope)
: (scope[id] = defaultPending)
: queueRender(scope, fn, id, 0, scope[scopeIdAccessor]);
}
);
}
function _for_closure(ownerLoopNodeAccessor, fn) {
let scopeAccessor =
"A" + (ownerLoopNodeAccessor = decodeAccessor(ownerLoopNodeAccessor)),
ownerSignal = (ownerScope) => {
let scopes = toArray(ownerScope[scopeAccessor]);
scopes.length &&
queueRender(
ownerScope,
() => {
for (let scope of scopes) !scope.H && !scope.I && fn(scope);
},
-1,
0,
scopes[0].L,
);
};
return ((ownerSignal._ = fn), ownerSignal);
}
function _if_closure(ownerConditionalNodeAccessor, branch, fn) {
let scopeAccessor =
"A" +
(ownerConditionalNodeAccessor = decodeAccessor(
ownerConditionalNodeAccessor,
)),
branchAccessor = "D" + ownerConditionalNodeAccessor,
ownerSignal = (scope) => {
let ifScope = scope[scopeAccessor];
ifScope &&
!ifScope.H &&
(scope[branchAccessor] || 0) === branch &&
queueRender(ifScope, fn, -1);
};
return ((ownerSignal._ = fn), ownerSignal);
}
function subscribeToScopeSet(ownerScope, accessor, scope) {
let subscribers = (ownerScope[accessor] ||= new Set());
subscribers.has(scope) ||
(subscribers.add(scope),
$signal(scope, -1).addEventListener("abort", () =>
ownerScope[accessor].delete(scope),
));
}
function _closure(...closureSignals) {
let [{ o: ___scopeInstancesAccessor, q: ___signalIndexAccessor }] =
closureSignals;
for (let i = closureSignals.length; i--; ) closureSignals[i].x = i;
return (scope) => {
if (scope[___scopeInstancesAccessor])
for (let childScope of scope[___scopeInstancesAccessor])
childScope.H ||
queueRender(
childScope,
closureSignals[childScope[___signalIndexAccessor]],
-1,
);
};
}
function _closure_get(valueAccessor, fn, getOwnerScope, resumeId) {
valueAccessor = decodeAccessor(valueAccessor);
let closureSignal = (scope) => {
((scope[closureSignal.q] = closureSignal.x),
fn(scope),
subscribeToScopeSet(
getOwnerScope ? getOwnerScope(scope) : scope._,
closureSignal.o,
scope,
));
};
return (
(closureSignal.o = "B" + valueAccessor),
(closureSignal.q = "C" + valueAccessor),
resumeId && _resume(resumeId, closureSignal),
closureSignal
);
}
function _child_setup(setup) {
return (
(setup._ = (scope, owner) => {
((scope._ = owner), queueRender(scope, setup, -1));
}),
setup
);
}
function _var(scope, childAccessor, signal) {
scope[decodeAccessor(childAccessor)].T = (value) => signal(scope, value);
}
var _return = (scope, value) => scope.T?.(value);
function _return_change(scope, changeHandler) {
changeHandler && (scope.U = changeHandler);
}
var _var_change = (scope, value) => scope.U?.(value),
tagIdsByGlobal = new WeakMap();
function _id({ $: $global }) {
let id = tagIdsByGlobal.get($global) || 0;
return (
tagIdsByGlobal.set($global, id + 1),
"c" + $global.runtimeId + $global.renderId + id.toString(36)
);
}
function _script(id, fn) {
return (
_resume(id, fn),
(scope) => {
queueEffect(scope, fn);
}
);
}
function _el_read(value) {
return value;
}
function* traverse(scope, path, i = path.length - 1) {
if (scope)
if (Symbol.iterator in scope)
for (let childScope of scope.values())
yield* traverse(childScope, path, i);
else {
let item = scope[path[i]];
i
? yield* traverse(item, path, i - 1)
: yield "function" == typeof item ? item() : item;
}
}
function _hoist(...path) {
return (
(path = path.map((p) => ("string" == typeof p ? p : decodeAccessor(p)))),
(scope) => {
let fn = () => traverse(scope, path).next().value;
return ((fn[Symbol.iterator] = () => traverse(scope, path)), fn);
}
);
}
function _hoist_resume(id, ...path) {
return _resume(id, _hoist(...path));
}
var walker = document.createTreeWalker(document);
function walk(startNode, walkCodes, branch) {
((walker.currentNode = startNode), walkInternal(0, walkCodes, branch));
}
function walkInternal(currentWalkIndex, walkCodes, scope) {
let value,
currentMultiplier,
storedMultiplier = 0,
currentScopeIndex = 0;
for (; currentWalkIndex < walkCodes.length; )
if (
((value = walkCodes.charCodeAt(currentWalkIndex++)),
(currentMultiplier = storedMultiplier),
(storedMultiplier = 0),
32 === value)
) {
let node = walker.currentNode;
scope[decodeAccessor(currentScopeIndex++)] = node;
} else if (37 === value || 49 === value)
(walker.currentNode.replaceWith(
(walker.currentNode = scope[decodeAccessor(currentScopeIndex++)] =
new Text()),
),
49 === value &&
(scope[decodeAccessor(currentScopeIndex++)] = skipScope()));
else {
if (38 === value) return currentWalkIndex;
if (47 === value || 48 === value)
((currentWalkIndex = walkInternal(
currentWalkIndex,
walkCodes,
(scope[decodeAccessor(currentScopeIndex++)] = createScope(
scope.$,
scope.F,
)),
)),
48 === value &&
(scope[decodeAccessor(currentScopeIndex++)] = skipScope()));
else if (value < 92)
for (value = 20 * currentMultiplier + value - 67; value--; )
walker.nextNode();
else if (value < 107)
for (value = 10 * currentMultiplier + value - 97; value--; )
walker.nextSibling();
else if (value < 117) {
for (value = 10 * currentMultiplier + value - 107; value--; )
walker.parentNode();
walker.nextSibling();
} else storedMultiplier = 10 * currentMultiplier + value - 117;
}
}
function createBranch($global, renderer, parentScope, parentNode) {
let branch = createScope($global);
return (
(branch._ = renderer.f || parentScope),
setParentBranch(branch, parentScope?.F),
renderer.k?.(branch, parentNode.namespaceURI),
branch
);
}
function setParentBranch(branch, parentBranch) {
(parentBranch &&
((branch.N = parentBranch), (parentBranch.D ||= new Set()).add(branch)),
(branch.F = branch));
}
function createAndSetupBranch($global, renderer, parentScope, parentNode) {
return setupBranch(
renderer,
createBranch($global, renderer, parentScope, parentNode),
);
}
function setupBranch(renderer, branch) {
return (renderer.l && queueRender(branch, renderer.l, -1), branch);
}
function _content(id, template, walks, setup, params, dynamicScopesAccessor) {
((walks = walks ? walks.replace(/[^\0-1]+$/, "") : ""),
(setup = setup ? setup._ || setup : void 0),
(params ||= void 0));
let clone = template
? (branch, ns) => {
((cloneCache[ns] ||= {})[template] ||= (function (html, ns) {
let { firstChild: firstChild, lastChild: lastChild } = parseHTML(
html,
ns,
),
parent = document.createElementNS(ns, "t");
return (
insertChildNodes(parent, null, firstChild, lastChild),
firstChild === lastChild && firstChild.nodeType < 8
? (branch, walks) => {
walk(
(branch.S = branch.K = firstChild.cloneNode(!0)),
walks,
branch,
);
}
: (branch, walks) => {
let clone = parent.cloneNode(!0);
(walk(clone.firstChild, walks, branch),
(branch.S = clone.firstChild),
(branch.K = clone.lastChild));
}
);
})(template, ns))(branch, walks);
}
: (branch) => {
walk((branch.S = branch.K = new Text()), walks, branch);
};
return (owner) => ({
g: id,
k: clone,
f: owner,
l: setup,
d: params,
e: dynamicScopesAccessor,
});
}
function _content_resume(
id,
template,
walks,
setup,
params,
dynamicScopesAccessor,
) {
return _resume(
id,
_content(id, template, walks, setup, params, dynamicScopesAccessor),
);
}
function _content_closures(renderer, closureFns) {
let closureSignals = {};
for (let key in closureFns)
closureSignals[key] = _const(+key, closureFns[key]);
return (owner, closureValues) => {
let instance = renderer(owner);
return (
(instance.h = closureSignals),
(instance.t = closureValues),
instance
);
};
}
var cloneCache = {};
var curRuntimeId,
readyLookup,
branchesEnabled,
embedEnabled,
registeredValues = {};
function enableBranches() {
branchesEnabled = 1;
}
var isResuming,
ready = (() => (id) => {
(readyLookup[id]?.(), (readyLookup[id] = 1));
})((readyLookup = {}));
function initEmbedded(readyId, runtimeId) {
((embedEnabled = 1),
ready(readyId),
init(runtimeId),
new MutationObserver(() => {
let renders = self[curRuntimeId];
for (let renderId in renders) {
let { s: s, n: n } = renders[renderId];
if (n && !n.isConnected) {
delete renders[renderId];
for (let id in s) destroyScope(s[id]);
}
}
}).observe(document.body, { childList: !0, subtree: !0 }));
}
function init(runtimeId = "M") {
if (curRuntimeId) return;
curRuntimeId = runtimeId;
let resumeRender,
renders = self[runtimeId],
defineRuntime = (desc) => Object.defineProperty(self, runtimeId, desc),
initRuntime = (renders2) => {
defineRuntime({
value: (resumeRender = (renderId) => {
let $global,
lastEffect,
visits,
resumes,
visit,
visitText,
visitType,
visitScope,
lastToken,
lastTokenIndex,
render = (resumeRender[renderId] =
renders2[renderId] || renders2(renderId)),
walk2 = render.w,
scopeLookup = (render.s = {}),
getScope = (id) => (scopeLookup[id] ||= { L: +id }),
serializeContext = { _: registeredValues },
visitBranches =
branchesEnabled &&
(
(
branchScopesStack = [],
branchStarts = [],
orphanBranches = [],
curBranchScopes,
) =>
(
branchId,
branch,
endedBranches,
accessor,
singleNode,
parent = visit.parentNode,
startVisit = visit,
i = orphanBranches.length,
) => {
for (
"[" !== visitType &&
((visitScope[nextToken()] =
")" === visitType || "}" === visitType ? parent : visit),
(accessor = "A" + lastToken),
(singleNode = "]" !== visitType && ")" !== visitType),
nextToken());
(branchId = +lastToken);
) {
if (
((endedBranches ||= []).push(
(branch = getScope(branchId)),
),
setParentBranch(branch, branch.F),
(branch.O = render.p?.[branchId]) &&
(branch.O.m = render.m),
singleNode)
) {
for (
;
startVisit.previousSibling &&
~visits.indexOf(
(startVisit = startVisit.previousSibling),
);
);
((branch.K = branch.S = startVisit),
"'" === visitType && (branch.a = startVisit));
} else
((curBranchScopes = push(curBranchScopes, branch)),
accessor &&
((visitScope[accessor] = curBranchScopes),
(curBranchScopes = branchScopesStack.pop())),
parent !==
(startVisit = branchStarts.pop()).parentNode &&
parent.prepend(startVisit),
(branch.S = startVisit),
(branch.K =
visit.previousSibling === startVisit
? startVisit
: parent.insertBefore(new Text(), visit)));
for (; i && orphanBranches[--i].L > branchId; )
setParentBranch(orphanBranches.pop(), branch);
nextToken();
}
(endedBranches &&
(orphanBranches.push(...endedBranches),
singleNode &&
(visitScope[accessor] =
endedBranches.length > 1
? endedBranches.reverse()
: endedBranches[0])),
"[" === visitType &&
(endedBranches ||
(branchScopesStack.push(curBranchScopes),
(curBranchScopes = void 0)),
branchStarts.push(visit)));
}
)(),
nextToken = () =>
(lastToken = visitText.slice(
lastTokenIndex,
(lastTokenIndex =
visitText.indexOf(" ", lastTokenIndex) + 1 ||
visitText.length + 1) - 1,
)),
lastScopeId = 0;
return (
(render.m = (effects = []) => {
if (readyLookup) {
for (let readyId in render.b)
if (1 !== readyLookup[readyId])
return (
(readyLookup[readyId] = ((prev) => () => {
(render.m(), prev?.());
})(readyLookup[readyId])),
effects
);
render.b = 0;
}
for (let serialized of (resumes = render.r || []))
if ("string" == typeof serialized)
for (
lastTokenIndex = 0, visitText = serialized;
nextToken();
)
/\D/.test(lastToken)
? (lastEffect = registeredValues[lastToken])
: effects.push(lastEffect, getScope(lastToken));
else
for (let scope of serialized(serializeContext))
$global
? "number" == typeof scope
? (lastScopeId += scope)
: ((scopeLookup[(scope.L = ++lastScopeId)] = scope),
(scope.$ = $global),
branchesEnabled && (scope.F = getScope(scope.G)))
: (($global = scope || {}),
($global.runtimeId = runtimeId),
($global.renderId = renderId));
for (visit of (visits = render.v))
((lastTokenIndex = render.i.length),
(visitText = visit.data),
(visitType = visitText[lastTokenIndex++]),
(visitScope = getScope(nextToken())),
"*" === visitType
? (visitScope[nextToken()] = visit.previousSibling)
: branchesEnabled && visitBranches());
return (
embedEnabled &&
(render.n ||= visit?.parentNode.insertBefore(
new Text(),
visit.nextSibling,
)),
(visits.length = resumes.length = 0),
effects
);
}),
(render.w = () => {
(walk2(), runResumeEffects(render));
}),
render
);
}),
});
};
if (renders) {
initRuntime(renders);
for (let renderId in renders) runResumeEffects(resumeRender(renderId));
} else defineRuntime({ configurable: !0, set: initRuntime });
}
function runResumeEffects(render) {
try {
((isResuming = 1), runEffects(render.m(), 1));
} finally {
isResuming = 0;
}
}
function _resume(id, obj) {
return (registeredValues[id] = obj);
}
function _var_resume(id, signal) {
return (_resume(id, (scope) => (value) => signal(scope, value)), signal);
}
function _el(id, accessor) {
return (
(accessor = decodeAccessor(accessor)),
_resume(id, (scope) => () => scope[accessor])
);
}
var inputType = "",
controllableDelegate = createDelegator();
function _attr_input_checked_default(scope, nodeAccessor, checked) {
let el = scope[nodeAccessor],
normalizedChecked = normalizeBoolProp(checked);
if (el.defaultChecked !== normalizedChecked) {
let restoreValue = scope.H ? normalizedChecked : el.checked;
((el.defaultChecked = normalizedChecked),
restoreValue !== normalizedChecked && (el.checked = restoreValue));
}
}
function _attr_input_checked(scope, nodeAccessor, checked, checkedChange) {
let el = scope[nodeAccessor],
normalizedChecked = normalizeBoolProp(checked);
((scope["E" + nodeAccessor] = checkedChange),
(scope["F" + nodeAccessor] = checkedChange ? 0 : 5),
checkedChange && !scope.H
? (el.checked = normalizedChecked)
: _attr_input_checked_default(scope, nodeAccessor, normalizedChecked));
}
function _attr_input_checked_script(scope, nodeAccessor) {
let el = scope[nodeAccessor];
syncControllableFormInput(el, hasCheckboxChanged, () => {
let checkedChange = scope["E" + nodeAccessor];
if (checkedChange) {
let newValue = el.checked;
((el.checked = !newValue), checkedChange(newValue), run());
}
});
}
function _attr_input_checkedValue_default(
scope,
nodeAccessor,
checkedValue,
value,
) {
let multiple = Array.isArray(checkedValue),
normalizedValue = normalizeStrProp(value),
normalizedCheckedValue = multiple
? checkedValue.map(normalizeStrProp)
: normalizeStrProp(checkedValue);
(_attr(scope[nodeAccessor], "value", normalizedValue),
_attr_input_checked_default(
scope,
nodeAccessor,
multiple
? normalizedCheckedValue.includes(normalizedValue)
: normalizedValue === normalizedCheckedValue,
));
}
function _attr_input_checkedValue(
scope,
nodeAccessor,
checkedValue,
checkedValueChange,
value,
) {
let el = scope[nodeAccessor],
multiple = Array.isArray(checkedValue),
normalizedValue = normalizeStrProp(value),
normalizedCheckedValue = (scope["G" + nodeAccessor] = multiple
? checkedValue.map(normalizeStrProp)
: normalizeStrProp(checkedValue));
(_attr(el, "value", normalizedValue),
(scope["E" + nodeAccessor] = checkedValueChange),
(scope["F" + nodeAccessor] = checkedValueChange ? 1 : 5),
checkedValueChange && !scope.H
? (el.checked = multiple
? normalizedCheckedValue.includes(normalizedValue)
: normalizedValue === normalizedCheckedValue)
: _attr_input_checkedValue_default(
scope,
nodeAccessor,
normalizedCheckedValue,
normalizedValue,
));
}
function _attr_input_checkedValue_script(scope, nodeAccessor) {
let el = scope[nodeAccessor];
(isResuming &&
el.defaultChecked &&
(scope["G" + nodeAccessor]
? scope["G" + nodeAccessor].push(el.value)
: (scope["G" + nodeAccessor] = el.value)),
syncControllableFormInput(el, hasCheckboxChanged, () => {
let checkedValueChange = scope["E" + nodeAccessor];
if (checkedValueChange) {
let oldValue = scope["G" + nodeAccessor],
newValue = Array.isArray(oldValue)
? (function (arr, val, push2) {
let index = arr.indexOf(val);
return (
(push2
? !~index && [...arr, val]
: ~index &&
arr.slice(0, index).concat(arr.slice(index + 1))) || arr
);
})(oldValue, el.value, el.checked)
: el.checked
? el.value
: void 0;
if (el.name && "r" === el.type[0])
for (let radio of el
.getRootNode()
.querySelectorAll(`[type=radio][name=${CSS.escape(el.name)}]`))
radio.form === el.form &&
(radio.checked = Array.isArray(oldValue)
? oldValue.includes(radio.value)
: oldValue === radio.value);
else el.checked = !el.checked;
(checkedValueChange(newValue), run());
}
}));
}
function _attr_input_value_default(scope, nodeAccessor, value) {
let el = scope[nodeAccessor],
normalizedValue = normalizeStrProp(value);
if (el.defaultValue !== normalizedValue) {
let restoreValue = scope.H ? normalizedValue : el.value;
((el.defaultValue = normalizedValue), setInputValue(el, restoreValue));
}
}
function _attr_input_value(scope, nodeAccessor, value, valueChange) {
let el = scope[nodeAccessor],
normalizedValue = normalizeStrProp(value);
((scope["E" + nodeAccessor] = valueChange),
(scope["G" + nodeAccessor] = normalizedValue),
(scope["F" + nodeAccessor] = valueChange ? 2 : 5),
valueChange && !scope.H
? setInputValue(el, normalizedValue)
: _attr_input_value_default(scope, nodeAccessor, normalizedValue));
}
function _attr_input_value_script(scope, nodeAccessor) {
let el = scope[nodeAccessor];
(isResuming && (scope["G" + nodeAccessor] = el.defaultValue),
syncControllableFormInput(el, hasValueChanged, (ev) => {
let valueChange = scope["E" + nodeAccessor];
valueChange &&
((inputType = ev?.inputType),
valueChange(el.value),
run(),
setInputValue(el, scope["G" + nodeAccessor]),
(inputType = ""));
}));
}
function setInputValue(el, value) {
if (el.value !== value) {
let updatedPosition = (function (
inputType2,
initialPosition,
initialValue,
updatedValue,
) {
if (
(initialPosition || 0 === initialPosition) &&
(initialPosition !== initialValue.length || /kw/.test(inputType2))
) {
let before = initialValue.slice(0, initialPosition),
after = initialValue.slice(initialPosition);
if (updatedValue.startsWith(before)) return initialPosition;
if (updatedValue.endsWith(after))
return updatedValue.length - after.length;
{
let relevantChars = stripSpacesAndPunctuation(before).length,
pos = 0,
relevantIndex = 0;
for (; relevantIndex < relevantChars; )
(stripSpacesAndPunctuation(updatedValue[pos]) && relevantIndex++,
pos++);
return pos;
}
}
return -1;
})(
inputType,
el.getRootNode().activeElement === el && el.selectionStart,
el.value,
(el.value = value),
);
~updatedPosition && el.setSelectionRange(updatedPosition, updatedPosition);
}
}
function _attr_select_value_default(scope, nodeAccessor, value) {
let restoreValue,
el = scope[nodeAccessor],
existing = !scope.H,
multiple = Array.isArray(value),
normalizedValue = multiple
? value.map(normalizeStrProp)
: normalizeStrProp(value);
pendingEffects.unshift(() => {
for (let opt of el.options) {
let selected = multiple
? normalizedValue.includes(opt.value)
: opt.value === normalizedValue;
opt.defaultSelected !== selected &&
(existing && (restoreValue ??= getSelectValue(el, multiple)),
(opt.defaultSelected = selected));
}
void 0 !== restoreValue && setSelectValue(el, restoreValue, multiple);
}, scope);
}
function _attr_select_value(scope, nodeAccessor, value, valueChange) {
let el = scope[nodeAccessor],
existing = !scope.H,
multiple = Array.isArray(value),
normalizedValue = (scope["G" + nodeAccessor] = multiple
? value.map(normalizeStrProp)
: normalizeStrProp(value));
((scope["E" + nodeAccessor] = valueChange),
(scope["F" + nodeAccessor] = valueChange ? 3 : 5),
valueChange && existing
? pendingEffects.unshift(
() => setSelectValue(el, normalizedValue, multiple),
scope,
)
: _attr_select_value_default(scope, nodeAccessor, normalizedValue));
}
function _attr_select_value_script(scope, nodeAccessor) {
let el = scope[nodeAccessor],
onChange = () => {
let valueChange = scope["E" + nodeAccessor];
if (valueChange) {
let oldValue = scope["G" + nodeAccessor],
multiple = Array.isArray(oldValue),
newValue = getSelectValue(el, multiple);
(setSelectValue(el, oldValue, multiple), valueChange(newValue), run());
}
};
if (isResuming)
if (el.multiple) {
scope["G" + nodeAccessor] = [];
for (let opt of el.options)
opt.defaultSelected && scope["G" + nodeAccessor].push(opt.value);
} else {
scope["G" + nodeAccessor] = "";
for (let opt of el.options)
if (opt.defaultSelected) {
scope["G" + nodeAccessor] = opt.value;
break;
}
}
(syncControllableFormInput(el, hasSelectChanged, onChange),
new MutationObserver(() => {
let value = scope["G" + nodeAccessor];
(Array.isArray(value)
? value.length !== el.selectedOptions.length ||
value.some((value2, i) => value2 != el.selectedOptions[i].value)
: el.value !== value) && onChange();
}).observe(el, { childList: !0, subtree: !0 }));
}
function setSelectValue(el, value, multiple) {
if (multiple)
for (let opt of el.options) opt.selected = value.includes(opt.value);
else el.value = value;
}
function getSelectValue(el, multiple) {
return multiple
? Array.from(el.selectedOptions, (opt) => opt.value)
: el.value;
}
function _attr_details_or_dialog_open_default(scope, nodeAccessor, open) {
scope.H && (scope[nodeAccessor].open = normalizeBoolProp(open));
}
function _attr_details_or_dialog_open(scope, nodeAccessor, open, openChange) {
let normalizedOpen = (scope["G" + nodeAccessor] = normalizeBoolProp(open));
((scope["E" + nodeAccessor] = openChange),
(scope["F" + nodeAccessor] = openChange ? 4 : 5),
openChange && !scope.H
? (scope[nodeAccessor].open = normalizedOpen)
: _attr_details_or_dialog_open_default(
scope,
nodeAccessor,
normalizedOpen,
));
}
function _attr_details_or_dialog_open_script(scope, nodeAccessor) {
let el = scope[nodeAccessor];
new MutationObserver(() => {
let openChange = scope["E" + nodeAccessor];
if (openChange && el.open === !scope["G" + nodeAccessor]) {
let newValue = el.open;
((el.open = !newValue), openChange(newValue), run());
}
}).observe(el, { attributes: !0, attributeFilter: ["open"] });
}
function syncControllableFormInput(el, hasChanged, onChange) {
((el._ = onChange),
controllableDelegate(el, "input", handleChange),
el.form && controllableDelegate(el.form, "reset", handleFormReset),
isResuming && hasChanged(el) && queueMicrotask(onChange));
}
function handleChange(ev) {
ev.target._?.(ev);
}
function handleFormReset(ev) {
let handlers = [];
for (let el of ev.target.elements)
el._ && hasFormElementChanged(el) && handlers.push(el._);
requestAnimationFrame(() => {
if (!ev.defaultPrevented) for (let change of handlers) change();
});
}
function hasValueChanged(el) {
return el.value !== el.defaultValue;
}
function hasCheckboxChanged(el) {
return el.checked !== el.defaultChecked;
}
function hasSelectChanged(el) {
for (let opt of el.options)
if (opt.selected !== opt.defaultSelected) return !0;
}
function hasFormElementChanged(el) {
return el.options
? hasSelectChanged(el)
: hasValueChanged(el) || hasCheckboxChanged(el);
}
function normalizeStrProp(value) {
return normalizeAttrValue(value) || "";
}
function normalizeBoolProp(value) {
return null != value && !1 !== value;
}
function _to_text(value) {
return value || 0 === value ? value + "" : "";
}
function _attr(element, name, value) {
setAttribute(element, name, normalizeAttrValue(value));
}
function setAttribute(element, name, value) {
element.getAttribute(name) != value &&
(void 0 === value
? element.removeAttribute(name)
: element.setAttribute(name, value));
}
function _attr_class(element, value) {
setAttribute(
element,
"class",
toDelimitedString(value, " ", stringifyClassObject) || void 0,
);
}
function _attr_class_items(element, items) {
for (let key in items) _attr_class_item(element, key, items[key]);
}
function _attr_class_item(element, name, value) {
element.classList.toggle(name, !!value);
}
function _attr_style(element, value) {
setAttribute(
element,
"style",
toDelimitedString(value, ";", stringifyStyleObject) || void 0,
);
}
function _attr_style_items(element, items) {
for (let key in items) _attr_style_item(element, key, items[key]);
}
function _attr_style_item(element, name, value) {
element.style.setProperty(name, _to_text(value));
}
function _attr_nonce(scope, nodeAccessor) {
_attr(scope[nodeAccessor], "nonce", scope.$.cspNonce);
}
function _text(node, value) {
let normalizedValue = normalizeString(value);
node.data !== normalizedValue && (node.data = normalizedValue);
}
function _text_content(node, value) {
let normalizedValue = normalizeString(value);
node.textContent !== normalizedValue && (node.textContent = normalizedValue);
}
function _attrs(scope, nodeAccessor, nextAttrs) {
let el = scope[nodeAccessor];
for (let i = el.attributes.length; i--; ) {
let { name: name } = el.attributes.item(i);
(nextAttrs && (name in nextAttrs || hasAttrAlias(el, name, nextAttrs))) ||
el.removeAttribute(name);
}
attrsInternal(scope, nodeAccessor, nextAttrs);
}
function _attrs_content(scope, nodeAccessor, nextAttrs) {
(_attrs(scope, nodeAccessor, nextAttrs),
_attr_content(scope, nodeAccessor, nextAttrs?.content));
}
function hasAttrAlias(element, attr, nextAttrs) {
return (
"checked" === attr &&
"INPUT" === element.tagName &&
"checkedValue" in nextAttrs
);
}
function _attrs_partial(scope, nodeAccessor, nextAttrs, skip) {
let el = scope[nodeAccessor],
partial = {};
for (let i = el.attributes.length; i--; ) {
let { name: name } = el.attributes.item(i);
!skip[name] &&
(!nextAttrs || !(name in nextAttrs)) &&
el.removeAttribute(name);
}
for (let name in nextAttrs) {
let key = isEventHandler(name) ? `on-${getEventHandlerName(name)}` : name;
skip[key] || (partial[key] = nextAttrs[name]);
}
attrsInternal(scope, nodeAccessor, partial);
}
function _attrs_partial_content(scope, nodeAccessor, nextAttrs, skip) {
(_attrs_partial(scope, nodeAccessor, nextAttrs, skip),
_attr_content(scope, nodeAccessor, nextAttrs?.content));
}
function attrsInternal(scope, nodeAccessor, nextAttrs) {
let events,
skip,
el = scope[nodeAccessor];
switch (el.tagName) {
case "INPUT":
if ("checked" in nextAttrs || "checkedChange" in nextAttrs)
_attr_input_checked(
scope,
nodeAccessor,
nextAttrs.checked,
nextAttrs.checkedChange,
);
else if ("checkedValue" in nextAttrs || "checkedValueChange" in nextAttrs)
_attr_input_checkedValue(
scope,
nodeAccessor,
nextAttrs.checkedValue,
nextAttrs.checkedValueChange,
nextAttrs.value,
);
else {
if (!("value" in nextAttrs) && !("valueChange" in nextAttrs)) break;
_attr_input_value(
scope,
nodeAccessor,
nextAttrs.value,
nextAttrs.valueChange,
);
}
skip = /^(?:value|checked(?:Value)?)(?:Change)?$/;
break;
case "SELECT":
("value" in nextAttrs || "valueChange" in nextAttrs) &&
(_attr_select_value(
scope,
nodeAccessor,
nextAttrs.value,
nextAttrs.valueChange,
),
(skip = /^value(?:Change)?$/));
break;
case "TEXTAREA":
("value" in nextAttrs || "valueChange" in nextAttrs) &&
(_attr_input_value(
scope,
nodeAccessor,
nextAttrs.value,
nextAttrs.valueChange,
),
(skip = /^value(?:Change)?$/));
break;
case "DETAILS":
case "DIALOG":
("open" in nextAttrs || "openChange" in nextAttrs) &&
(_attr_details_or_dialog_open(
scope,
nodeAccessor,
nextAttrs.open,
nextAttrs.openChange,
),
(skip = /^open(?:Change)?$/));
}
for (let name in nextAttrs) {
let value = nextAttrs[name];
switch (name) {
case "class":
_attr_class(el, value);
break;
case "style":
_attr_style(el, value);
break;
default:
isEventHandler(name)
? ((events ||= scope["I" + nodeAccessor] = {})[
getEventHandlerName(name)
] = value)
: skip?.test(name) ||
("content" === name && "META" !== el.tagName) ||
_attr(el, name, value);
}
}
}
function _attr_content(scope, nodeAccessor, value) {
let content = (function (value) {
let renderer = normalizeDynamicRenderer(value);
if (renderer && renderer.g) return renderer;
})(value);
scope["D" + nodeAccessor] !== (scope["D" + nodeAccessor] = content?.g) &&
(setConditionalRenderer(scope, nodeAccessor, content, createAndSetupBranch),
content?.e &&
subscribeToScopeSet(content.f, content.e, scope["A" + nodeAccessor]));
for (let accessor in content?.h)
content.h[accessor](scope["A" + nodeAccessor], content.t[accessor]);
}
function _attrs_script(scope, nodeAccessor) {
let el = scope[nodeAccessor],
events = scope["I" + nodeAccessor];
switch (scope["F" + nodeAccessor]) {
case 0:
_attr_input_checked_script(scope, nodeAccessor);
break;
case 1:
_attr_input_checkedValue_script(scope, nodeAccessor);
break;
case 2:
_attr_input_value_script(scope, nodeAccessor);
break;
case 3:
_attr_select_value_script(scope, nodeAccessor);
break;
case 4:
_attr_details_or_dialog_open_script(scope, nodeAccessor);
}
for (let name in events) _on(el, name, events[name]);
}
function _html(scope, value, accessor) {
let firstChild = scope[accessor],
parentNode = firstChild.parentNode,
lastChild = scope["H" + accessor] || firstChild,
newContent = parseHTML(_to_text(value), parentNode.namespaceURI);
(insertChildNodes(
parentNode,
firstChild,
(scope[accessor] =
newContent.firstChild || newContent.appendChild(new Text())),
(scope["H" + accessor] = newContent.lastChild),
),
removeChildNodes(firstChild, lastChild));
}
function normalizeAttrValue(value) {
if (value || 0 === value) return !0 === value ? "" : value + "";
}
function normalizeString(value) {
return value || 0 === value ? value + "" : "";
}
function _lifecycle(scope, thisObj, index = 0) {
let accessor = "K" + index,
instance = scope[accessor];
instance
? (Object.assign(instance, thisObj), instance.onUpdate?.())
: ((scope[accessor] = thisObj),
thisObj.onMount?.(),
($signal(scope, accessor).onabort = () => thisObj.onDestroy?.()));
}
function removeChildNodes(startNode, endNode) {
let stop = endNode.nextSibling,
current = startNode;
for (; current !== stop; ) {
let next = current.nextSibling;
(current.remove(), (current = next));
}
}
function insertChildNodes(parentNode, referenceNode, startNode, endNode) {
parentNode.insertBefore(toInsertNode(startNode, endNode), referenceNode);
}
function toInsertNode(startNode, endNode) {
if (startNode === endNode) return startNode;
let parent = new DocumentFragment(),
stop = endNode.nextSibling,
current = startNode;
for (; current !== stop; ) {
let next = current.nextSibling;
(parent.appendChild(current), (current = next));
}
return parent;
}
function _await_promise(nodeAccessor, params) {
let promiseAccessor = "L" + (nodeAccessor = decodeAccessor(nodeAccessor)),
branchAccessor = "A" + nodeAccessor;
return (
_enable_catch(),
(scope, promise) => {
let awaitBranch = scope[branchAccessor],
tryBranch = findBranchWithKey(scope, "Q") || awaitBranch,
awaitCounter = tryBranch.O;
(awaitCounter?.i ||
(awaitCounter = tryBranch.O =
{
i: 0,
c() {
if (--awaitCounter.i) return 1;
if (tryBranch === scope[branchAccessor])
scope[nodeAccessor].parentNode &&
scope[nodeAccessor].replaceWith(
scope[branchAccessor].S.parentNode,
);
else {
let placeholderBranch = tryBranch.P;
placeholderBranch &&
((tryBranch.P = 0),
placeholderBranch.S.parentNode.insertBefore(
tryBranch.S.parentNode,
placeholderBranch.S,
),
removeAndDestroyBranch(placeholderBranch));
}
queueEffect(tryBranch, (scope2) => {
let pendingEffects2 = scope2.J;
pendingEffects2 &&
((scope2.J = []), runEffects(pendingEffects2, 1));
});
},
}),
placeholderShown.add(pendingEffects),
scope[promiseAccessor] ||
(awaitBranch && (awaitBranch.W ||= []),
awaitCounter.i++ ||
requestAnimationFrame(
() =>
awaitCounter.i &&
runEffects(
prepareEffects(() =>
queueRender(
tryBranch === awaitBranch ? scope : tryBranch,
() => {
tryBranch.Q
? (insertBranchBefore(
(tryBranch.P = createAndSetupBranch(
scope.$,
tryBranch.Q,
tryBranch._,
tryBranch.S.parentNode,
)),
tryBranch.S.parentNode,
tryBranch.S,
),
tempDetachBranch(tryBranch))
: awaitBranch.V ||
(awaitBranch.S.parentNode.insertBefore(
scope[nodeAccessor],
awaitBranch.S,
),
tempDetachBranch(tryBranch));
},
-1,
),
),
),
)));
let thisPromise = (scope[promiseAccessor] = promise.then(
(data) => {
if (thisPromise === scope[promiseAccessor]) {
let referenceNode = scope[nodeAccessor];
((scope[promiseAccessor] = 0),
queueMicrotask(run),
queueRender(
scope,
() => {
((awaitBranch = scope[branchAccessor]).V &&
(pendingScopes.push(awaitBranch),
setupBranch(awaitBranch.V, awaitBranch),
(awaitBranch.V = 0),
insertBranchBefore(
awaitBranch,
scope[nodeAccessor].parentNode,
scope[nodeAccessor],
),
referenceNode.remove()),
params?.(awaitBranch, [data]));
let pendingRenders2 = awaitBranch.W;
if (
((awaitBranch.W = 0),
pendingRenders2?.forEach(queuePendingRender),
placeholderShown.add(pendingEffects),
awaitCounter.c(),
awaitCounter.m)
) {
let fnScopes = new Map(),
effects = awaitCounter.m();
for (let i = 0; i < pendingEffects.length; ) {
let fn = pendingEffects[i++],
scopes = fnScopes.get(fn);
(scopes || fnScopes.set(fn, (scopes = new Set())),
scopes.add(pendingEffects[i++]));
}
for (let i = 0; i < effects.length; ) {
let fn = effects[i++],
scope2 = effects[i++];
fnScopes.get(fn)?.has(scope2) || queueEffect(scope2, fn);
}
}
},
-1,
));
}
},
(error) => {
thisPromise === scope[promiseAccessor] &&
((awaitCounter.i = scope[promiseAccessor] = 0),
schedule(),
queueRender(scope, renderCatch, -1, error));
},
));
}
);
}
function _await_content(nodeAccessor, template, walks, setup) {
let branchAccessor = "A" + (nodeAccessor = decodeAccessor(nodeAccessor)),
renderer = _content("", template, walks, setup)();
return (scope) => {
(((scope[branchAccessor] = createBranch(
scope.$,
renderer,
scope,
scope[nodeAccessor].parentNode,
)).V = renderer),
pendingScopes.pop());
};
}
function _try(nodeAccessor, template, walks, setup) {
let branchAccessor = "A" + (nodeAccessor = decodeAccessor(nodeAccessor)),
renderer = _content("", template, walks, setup)();
return (scope, input) => {
scope[branchAccessor] ||
setConditionalRenderer(
scope,
nodeAccessor,
renderer,
createAndSetupBranch,
);
let branch = scope[branchAccessor];
branch &&
((branch.C = nodeAccessor),
(branch.E = normalizeDynamicRenderer(input.catch)),
(branch.Q = normalizeDynamicRenderer(input.placeholder)));
};
}
function renderCatch(scope, error) {
let tryWithCatch = findBranchWithKey(scope, "E");
if (!tryWithCatch) throw error;
{
let owner = tryWithCatch._,
placeholderBranch = tryWithCatch.P;
(placeholderBranch &&
(tryWithCatch.O && (tryWithCatch.O.i = 0),
(owner["A" + tryWithCatch.C] = placeholderBranch),
destroyBranch(tryWithCatch)),
caughtError.add(pendingEffects),
setConditionalRenderer(
owner,
tryWithCatch.C,
tryWithCatch.E,
createAndSetupBranch,
),
tryWithCatch.E.d?.(owner["A" + tryWithCatch.C], [error]));
}
}
function _if(nodeAccessor, ...branchesArgs) {
let branchAccessor = "D" + (nodeAccessor = decodeAccessor(nodeAccessor)),
branches = [],
i = 0;
for (; i < branchesArgs.length; )
branches.push(
_content("", branchesArgs[i++], branchesArgs[i++], branchesArgs[i++])(),
);
return (
enableBranches(),
(scope, newBranch) => {
newBranch !== scope[branchAccessor] &&
setConditionalRenderer(
scope,
nodeAccessor,
branches[(scope[branchAccessor] = newBranch)],
createAndSetupBranch,
);
}
);
}
var _dynamic_tag = function (nodeAccessor, getContent, getTagVar, inputIsArgs) {
let childScopeAccessor = "A" + (nodeAccessor = decodeAccessor(nodeAccessor)),
rendererAccessor = "D" + nodeAccessor;
return (
enableBranches(),
(scope, newRenderer, getInput) => {
let normalizedRenderer = normalizeDynamicRenderer(newRenderer);
if (
scope[rendererAccessor] !==
(scope[rendererAccessor] =
normalizedRenderer?.g || normalizedRenderer) ||
(getContent && !normalizedRenderer && !scope[childScopeAccessor])
)
if (
(setConditionalRenderer(
scope,
nodeAccessor,
normalizedRenderer || (getContent ? getContent(scope) : void 0),
createBranchWithTagNameOrRenderer,
),
getTagVar &&
(scope[childScopeAccessor].T = (value) =>
getTagVar()(scope, value)),
"string" == typeof normalizedRenderer)
) {
if (getContent) {
let content = getContent(scope);
(setConditionalRenderer(
scope[childScopeAccessor],
"a",
content,
createAndSetupBranch,
),
content.e &&
subscribeToScopeSet(
content.f,
content.e,
scope[childScopeAccessor].Aa,
));
}
} else
normalizedRenderer?.e &&
subscribeToScopeSet(
normalizedRenderer.f,
normalizedRenderer.e,
scope[childScopeAccessor],
);
if (normalizedRenderer) {
let childScope = scope[childScopeAccessor],
args = getInput?.();
if ("string" == typeof normalizedRenderer)
((getContent ? _attrs : _attrs_content)(
childScope,
"a",
(inputIsArgs ? args[0] : args) || {},
),
(childScope.Ia || childScope.Ea) &&
queueEffect(childScope, dynamicTagScript));
else {
for (let accessor in normalizedRenderer.h)
normalizedRenderer.h[accessor](
childScope,
normalizedRenderer.t[accessor],
);
if (normalizedRenderer.d)
if (inputIsArgs)
normalizedRenderer.d(
childScope,
normalizedRenderer._ ? args[0] : args,
);
else {
let inputWithContent = getContent
? { ...args, content: getContent(scope) }
: args || {};
normalizedRenderer.d(
childScope,
normalizedRenderer._ ? inputWithContent : [inputWithContent],
);
}
}
}
}
);
};
function _resume_dynamic_tag() {
_resume("d", dynamicTagScript);
}
function dynamicTagScript(branch) {
_attrs_script(branch, "a");
}
function setConditionalRenderer(
scope,
nodeAccessor,
newRenderer,
createBranch2,
) {
let referenceNode = scope[nodeAccessor],
prevBranch = scope["A" + nodeAccessor],
parentNode =
referenceNode.nodeType > 1
? (prevBranch?.S || referenceNode).parentNode
: referenceNode,
newBranch = (scope["A" + nodeAccessor] =
newRenderer && createBranch2(scope.$, newRenderer, scope, parentNode));
referenceNode === parentNode
? (prevBranch &&
(destroyBranch(prevBranch), (referenceNode.textContent = "")),
newBranch && insertBranchBefore(newBranch, parentNode, null))
: prevBranch
? (newBranch
? insertBranchBefore(newBranch, parentNode, prevBranch.S)
: parentNode.insertBefore(referenceNode, prevBranch.S),
removeAndDestroyBranch(prevBranch))
: newBranch &&
(insertBranchBefore(newBranch, parentNode, referenceNode),
referenceNode.remove());
}
var _for_of = loop(([all, by = bySecondArg], cb) => {
forOf(
all,
"string" == typeof by
? (item, i) => cb(item[by], [item, i])
: (item, i) => cb(by(item, i), [item, i]),
);
}),
_for_in = loop(([obj, by = byFirstArg], cb) =>
forIn(obj, (key, value) => cb(by(key, value), [key, value])),
),
_for_to = loop(([to, from, step, by = byFirstArg], cb) =>
forTo(to, from, step, (v) => cb(by(v), [v])),
),
_for_until = loop(([until, from, step, by = byFirstArg], cb) =>
forUntil(until, from, step, (v) => cb(by(v), [v])),
);
function loop(forEach) {
return (nodeAccessor, template, walks, setup, params) => {
let scopesAccessor = "A" + (nodeAccessor = decodeAccessor(nodeAccessor)),
renderer = _content("", template, walks, setup)();
return (
enableBranches(),
(scope, value) => {
let oldScopesByKey,
hasPotentialMoves,
referenceNode = scope[nodeAccessor],
oldScopes = toArray(scope[scopesAccessor]),
newScopes = (scope[scopesAccessor] = []),
oldLen = oldScopes.length,
parentNode =
referenceNode.nodeType > 1
? referenceNode.parentNode || oldScopes[0]?.S.parentNode
: referenceNode;
forEach(value, (key, args) => {
let branch =
oldLen &&
(oldScopesByKey ||= oldScopes.reduce(
(map, scope2, i) => map.set(scope2.M ?? i, scope2),
new Map(),
)).get(key);
(branch
? (hasPotentialMoves = oldScopesByKey.delete(key))
: (branch = createAndSetupBranch(
scope.$,
renderer,
scope,
parentNode,
)),
(branch.M = key),
newScopes.push(branch),
params?.(branch, args));
});
let newLen = newScopes.length,
hasSiblings = referenceNode !== parentNode,
afterReference = null,
oldEnd = oldLen - 1,
newEnd = newLen - 1,
start = 0;
if (
(hasSiblings &&
(oldLen
? ((afterReference = oldScopes[oldEnd].K.nextSibling),
newLen ||
parentNode.insertBefore(referenceNode, afterReference))
: newLen &&
((afterReference = referenceNode.nextSibling),
referenceNode.remove())),
!hasPotentialMoves)
) {
oldLen &&
(oldScopes.forEach(
hasSiblings ? removeAndDestroyBranch : destroyBranch,
),
hasSiblings || (parentNode.textContent = ""));
for (let newScope of newScopes)
insertBranchBefore(newScope, parentNode, afterReference);
return;
}
for (let branch of oldScopesByKey.values())
removeAndDestroyBranch(branch);
for (
;
start < oldLen &&
start < newLen &&
oldScopes[start] === newScopes[start];
)
start++;
for (
;
oldEnd >= start &&
newEnd >= start &&
oldScopes[oldEnd] === newScopes[newEnd];
)
(oldEnd--, newEnd--);
if (
(oldEnd + 1 < oldLen && (afterReference = oldScopes[oldEnd + 1].S),
start > oldEnd)
) {
if (start <= newEnd)
for (let i = start; i <= newEnd; i++)
insertBranchBefore(newScopes[i], parentNode, afterReference);
return;
}
if (start > newEnd) return;
let lo,
hi,
mid,
diffLen = newEnd - start + 1,
oldPos = new Map(),
sources = new Array(diffLen),
pred = new Array(diffLen),
tails = [],
tail = -1;
for (let i = start; i <= oldEnd; i++) oldPos.set(oldScopes[i], i);
for (let i = diffLen; i--; )
sources[i] = oldPos.get(newScopes[start + i]) ?? -1;
for (let i = 0; i < diffLen; i++)
if (~sources[i])
if (tail < 0 || sources[tails[tail]] < sources[i])
(~tail && (pred[i] = tails[tail]), (tails[++tail] = i));
else {
for (lo = 0, hi = tail; lo < hi; )
((mid = ((lo + hi) / 2) | 0),
sources[tails[mid]] < sources[i]
? (lo = mid + 1)
: (hi = mid));
sources[i] < sources[tails[lo]] &&
(lo > 0 && (pred[i] = tails[lo - 1]), (tails[lo] = i));
}
for (hi = tails[tail], lo = tail + 1; lo-- > 0; )
((tails[lo] = hi), (hi = pred[hi]));
for (let i = diffLen; i--; )
(~tail && i === tails[tail]
? tail--
: insertBranchBefore(
newScopes[start + i],
parentNode,
afterReference,
),
(afterReference = newScopes[start + i].S));
}
);
};
}
function createBranchWithTagNameOrRenderer(
$global,
tagNameOrRenderer,
parentScope,
parentNode,
) {
let branch = createBranch(
$global,
tagNameOrRenderer,
parentScope,
parentNode,
);
return (
"string" == typeof tagNameOrRenderer
? (branch.a =
branch.S =
branch.K =
document.createElementNS(
"svg" === tagNameOrRenderer
? "http://www.w3.org/2000/svg"
: "math" === tagNameOrRenderer
? "http://www.w3.org/1998/Math/MathML"
: parentNode.namespaceURI,
tagNameOrRenderer,
))
: setupBranch(tagNameOrRenderer, branch),
branch
);
}
function bySecondArg(_item, index) {
return index;
}
function byFirstArg(name) {
return name;
}
var asyncRendersLookup,
rendering,
pendingRenders = [],
pendingRendersLookup = new Map(),
caughtError = new WeakSet(),
placeholderShown = new WeakSet(),
pendingEffects = [],
pendingScopes = [],
scopeKeyOffset = 1e3;
function queueRender(scope, signal, signalKey, value, scopeKey = scope.L) {
let key = scopeKey * scopeKeyOffset + signalKey,
render = signalKey >= 0 && pendingRendersLookup.get(key);
render
? (render.u = value)
: (queuePendingRender((render = { a: key, j: scope, y: signal, u: value })),
signalKey >= 0 && pendingRendersLookup.set(key, render));
}
function queuePendingRender(render) {
let i = pendingRenders.push(render) - 1;
for (; i; ) {
let parentIndex = (i - 1) >> 1,
parent = pendingRenders[parentIndex];
if (render.a - parent.a >= 0) break;
((pendingRenders[i] = parent), (i = parentIndex));
}
pendingRenders[i] = render;
}
function queueEffect(scope, fn) {
pendingEffects.push(fn, scope);
}
function run() {
let effects = pendingEffects;
asyncRendersLookup = new Map();
try {
((rendering = 1), runRenders());
} finally {
((pendingRendersLookup = asyncRendersLookup),
(asyncRendersLookup = rendering = 0),
(pendingRenders = []),
(pendingEffects = []));
}
runEffects(effects);
}
function prepareEffects(fn) {
let prevRenders = pendingRenders,
prevEffects = pendingEffects,
prevLookup = asyncRendersLookup,
preparedEffects = (pendingEffects = []);
((pendingRenders = []),
(asyncRendersLookup = pendingRendersLookup),
(pendingRendersLookup = new Map()));
try {
((rendering = 1), fn(), runRenders());
} finally {
((rendering = 0),
(pendingRendersLookup = asyncRendersLookup),
(asyncRendersLookup = prevLookup),
(pendingRenders = prevRenders),
(pendingEffects = prevEffects));
}
return preparedEffects;
}
var runEffects = (effects) => {
for (let i = 0; i < effects.length; ) effects[i++](effects[i++]);
};
function runRenders() {
for (; pendingRenders.length; ) {
let render = pendingRenders[0],
item = pendingRenders.pop();
if (render !== item) {
let i = 0,
mid = pendingRenders.length >> 1,
key = (pendingRenders[0] = item).a;
for (; i < mid; ) {
let bestChild = 1 + (i << 1),
right = bestChild + 1;
if (
(right < pendingRenders.length &&
pendingRenders[right].a - pendingRenders[bestChild].a < 0 &&
(bestChild = right),
pendingRenders[bestChild].a - key >= 0)
)
break;
((pendingRenders[i] = pendingRenders[bestChild]), (i = bestChild));
}
pendingRenders[i] = item;
}
render.j.F?.I || runRender(render);
}
for (let scope of pendingScopes) scope.H = 0;
pendingScopes = [];
}
var runRender = (render) => render.y(render.j, render.u),
_enable_catch = () => {
((_enable_catch = () => {}), enableBranches());
let handlePendingTry = (fn, scope, branch) => {
for (; branch; ) {
if (branch.O?.i) return (branch.J ||= []).push(fn, scope);
branch = branch.N;
}
};
((runEffects = (
(runEffects2) =>
(effects, checkPending = placeholderShown.has(effects)) => {
if (checkPending || caughtError.has(effects)) {
let fn,
scope,
branch,
i = 0;
for (; i < effects.length; )
((fn = effects[i++]),
(scope = effects[i++]),
(branch = scope.F),
!branch?.I &&
(!checkPending || !handlePendingTry(fn, scope, branch)) &&
fn(scope));
} else runEffects2(effects);
}
)(runEffects)),
(runRender = ((runRender2) => (render) => {
try {
let branch = render.j.F;
for (; branch; ) {
if (branch.W)
return (
asyncRendersLookup.set(render.a, render),
branch.W.push(render)
);
branch = branch.N;
}
runRender2(render);
} catch (error) {
renderCatch(render.j, error);
}
})(runRender)));
};
function $signalReset(scope, id) {
let ctrl = scope.A?.[id];
ctrl && (queueEffect(ctrl, abort), (scope.A[id] = void 0));
}
function $signal(scope, id) {
return (
scope.F && (scope.F.B ||= new Set()).add(scope),
((scope.A ||= {})[id] ||= new AbortController()).signal
);
}
function abort(ctrl) {
ctrl.abort();
}
var classIdToBranch = new Map(),
compat = {
patchDynamicTag: function (fn) {
_dynamic_tag = fn(_dynamic_tag);
},
queueEffect: queueEffect,
init(warp10Noop) {
(_resume("$C_s", (branch) => {
classIdToBranch.set(branch.m5c, branch);
}),
_resume("$C_b", warp10Noop));
},
registerRenderer(fn) {
_resume("$C_r", fn);
},
isRenderer: (renderer) => renderer.k,
getStartNode: (branch) => branch.S,
setScopeNodes(branch, startNode, endNode) {
((branch.S = startNode), (branch.K = endNode));
},
runComponentEffects() {
this.effects && runEffects(this.effects);
},
runComponentDestroy() {
this.scope && destroyBranch(this.scope);
},
resolveRegistered: (value, $global) =>
Array.isArray(value) && "string" == typeof value[0]
? (function (id, scope) {
let val = registeredValues[id];
return scope ? val(scope) : val;
})(
value[0],
2 === value.length &&
self[$global.runtimeId]?.[$global.renderId]?.s[value[1]],
)
: value,
createRenderer(params, clone) {
let renderer = _content("", 0, 0, 0, params)();
return (
(renderer.k = (branch) => {
let cloned = clone();
((branch.S = cloned.startNode), (branch.K = cloned.endNode));
}),
renderer
);
},
render(out, component, renderer, args) {
let branch = component.scope,
created = 0;
if (
(!branch &&
(branch = classIdToBranch.get(component.id)) &&
((component.scope = branch), classIdToBranch.delete(component.id)),
"object" == typeof args[0] && "renderBody" in args[0])
) {
let input = args[0],
normalizedInput = (args[0] = {});
for (let key in input)
normalizedInput["renderBody" === key ? "content" : key] = input[key];
}
if (
((component.effects = prepareEffects(() => {
(branch ||
((created = 1),
(branch = component.scope =
createAndSetupBranch(
out.global,
renderer,
renderer.f,
document.body,
))),
renderer.d?.(branch, renderer._ ? args[0] : args));
})),
created)
)
return toInsertNode(branch.S, branch.K);
},
},
_template = (id, template, walks, setup, inputSignal) => {
let renderer = _content(id, template, walks, setup, inputSignal)();
return (
(renderer.mount = mount),
(renderer._ = renderer),
_resume(id, renderer)
);
};
function mount(input = {}, reference, position) {
let branch,
parentNode = reference,
nextSibling = null,
{ $global: $global } = input;
switch (
($global
? (({ $global: $global, ...input } = input),
($global = { runtimeId: "M", renderId: "_", ...$global }))
: ($global = { runtimeId: "M", renderId: "_" }),
position)
) {
case "beforebegin":
((parentNode = reference.parentNode), (nextSibling = reference));
break;
case "afterbegin":
nextSibling = reference.firstChild;
break;
case "afterend":
((parentNode = reference.parentNode),
(nextSibling = reference.nextSibling));
}
let curValue,
args = this.d,
effects = prepareEffects(() => {
((branch = createBranch($global, this, void 0, parentNode)),
(branch.T = (newValue) => {
curValue = newValue;
}),
this.l?.(branch),
args?.(branch, input));
});
return (
insertChildNodes(parentNode, nextSibling, branch.S, branch.K),
runEffects(effects),
{
get value() {
return curValue;
},
set value(newValue) {
_var_change(branch, newValue);
},
update(newInput) {
args &&
runEffects(
prepareEffects(() => {
args(branch, newInput);
}),
);
},
destroy() {
removeAndDestroyBranch(branch);
},
}
);
}
================================================
FILE: .sizes/name-cache.json
================================================
{"vars":{"props":{"$empty":"e","$rest":"t","$attrTag":"n","$attrTags":"r","$attrTagIterator":"o","$_assert_hoist":"i","$_assert_init":"l","$forIn":"u","$forOf":"f","$forTo":"a","$forUntil":"c","$_call":"s","$stringifyClassObject":"d","$stringifyStyleObject":"p","$toDelimitedString":"h","$isEventHandler":"g","$getEventHandlerName":"v","$normalizeDynamicRenderer":"m","$decodeAccessor":"b","$toArray":"y","$push":"S","$defaultDelegator":"A","$_on":"_","$createDelegator":"k","$handleDelegated":"C","$stripSpacesAndPunctuation":"N","$parsers":"w","$parseHTML":"E","$isScheduled":"x","$channel":"M","$nextScopeId":"I","$createScope":"F","$skipScope":"$","$findBranchWithKey":"T","$destroyBranch":"L","$destroyScope":"G","$destroyNestedScopes":"H","$resetControllers":"O","$removeAndDestroyBranch":"D","$insertBranchBefore":"K","$tempDetachBranch":"V","$schedule":"R","$flushAndWaitFrame":"B","$triggerMacroTask":"W","$_let":"q","$_const":"U","$_or":"j","$_for_closure":"P","$_if_closure":"Q","$subscribeToScopeSet":"J","$_closure":"X","$_closure_get":"Z","$_child_setup":"z","$_var":"Y","$_return":"ee","$_return_change":"te","$_var_change":"ne","$tagIdsByGlobal":"re","$_id":"oe","$_script":"ie","$_el_read":"le","$traverse":"ue","$_hoist":"fe","$_hoist_resume":"ae","$walker":"ce","$walk":"se","$walkInternal":"de","$createBranch":"pe","$setParentBranch":"he","$createAndSetupBranch":"ge","$setupBranch":"ve","$_content":"me","$_content_resume":"be","$_content_closures":"ye","$curRuntimeId":"Se","$readyLookup":"Ae","$branchesEnabled":"_e","$embedEnabled":"ke","$cloneCache":"Ce","$registeredValues":"Ne","$enableBranches":"we","$isResuming":"Ee","$ready":"xe","$initEmbedded":"Me","$init":"Ie","$runResumeEffects":"Fe","$_resume":"$e","$_var_resume":"Te","$_el":"Le","$inputType":"Ge","$controllableDelegate":"He","$_attr_input_checked_default":"Oe","$_attr_input_checked":"De","$_attr_input_checked_script":"Ke","$_attr_input_checkedValue_default":"Ve","$_attr_input_checkedValue":"Re","$_attr_input_checkedValue_script":"Be","$_attr_input_value_default":"We","$_attr_input_value":"qe","$_attr_input_value_script":"Ue","$setInputValue":"je","$_attr_select_value_default":"Pe","$_attr_select_value":"Qe","$_attr_select_value_script":"Je","$setSelectValue":"Xe","$getSelectValue":"Ze","$_attr_details_or_dialog_open_default":"ze","$_attr_details_or_dialog_open":"Ye","$_attr_details_or_dialog_open_script":"et","$syncControllableFormInput":"tt","$handleChange":"nt","$handleFormReset":"rt","$hasValueChanged":"ot","$hasCheckboxChanged":"it","$hasSelectChanged":"lt","$hasFormElementChanged":"ut","$normalizeStrProp":"ft","$normalizeBoolProp":"at","$_to_text":"ct","$_attr":"st","$setAttribute":"dt","$_attr_class":"pt","$_attr_class_items":"ht","$_attr_class_item":"gt","$_attr_style":"vt","$_attr_style_items":"mt","$_attr_style_item":"bt","$_attr_nonce":"yt","$_text":"St","$_text_content":"At","$_attrs":"_t","$_attrs_content":"kt","$hasAttrAlias":"Ct","$_attrs_partial":"Nt","$_attrs_partial_content":"wt","$attrsInternal":"Et","$_attr_content":"xt","$_attrs_script":"Mt","$_html":"It","$normalizeAttrValue":"Ft","$normalizeString":"$t","$_lifecycle":"Tt","$removeChildNodes":"Lt","$insertChildNodes":"Gt","$toInsertNode":"Ht","$_await_promise":"Ot","$_await_content":"Dt","$_try":"Kt","$renderCatch":"Vt","$_if":"Rt","$_dynamic_tag":"Bt","$_resume_dynamic_tag":"Wt","$dynamicTagScript":"qt","$setConditionalRenderer":"Ut","$_for_of":"jt","$_for_in":"Pt","$_for_to":"Qt","$_for_until":"Jt","$loop":"Xt","$createBranchWithTagNameOrRenderer":"Zt","$bySecondArg":"zt","$byFirstArg":"Yt","$asyncRendersLookup":"en","$rendering":"tn","$pendingRenders":"nn","$pendingRendersLookup":"rn","$caughtError":"on","$placeholderShown":"ln","$pendingEffects":"un","$pendingScopes":"fn","$scopeKeyOffset":"an","$queueRender":"cn","$queuePendingRender":"sn","$queueEffect":"dn","$run":"pn","$prepareEffects":"hn","$runEffects":"gn","$runRenders":"vn","$runRender":"mn","$_enable_catch":"bn","$$signalReset":"yn","$$signal":"Sn","$abort":"An","$classIdToBranch":"_n","$compat":"kn","$_template":"Cn","$mount":"Nn","$$clickCount__script":"Bn","$$clickCount":"Dn","$$setup":"jn","$forEach":"xn","$$if_content__comment_comments":"aa","$$if_content__setup":"sa","$$if_content__id":"ta","$$for_content__id":"na","$$for_content__input_path":"ia","$$for_content__open__script":"la","$$for_content__open":"ma","$$for_content__setup":"ca","$$for_content__if":"oa","$$for_content__comment_comments":"ua","$$for_content__$params":"ba","$$for_content__comment":"ea","$$for":"_a","$$input_comments$1":"da","$$input_path$1":"fa"}}}
================================================
FILE: .sizes.json
================================================
{
"examples": {
"counter": "./packages/runtime-tags/src/__tests__/fixtures/basic-counter/template.marko",
"comments": "./packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/template.marko"
},
"results": [
{
"name": "*",
"total": {
"min": 21238,
"brotli": 7981
}
},
{
"name": "counter",
"user": {
"min": 173,
"brotli": 148
},
"runtime": {
"min": 4079,
"brotli": 1829
},
"total": {
"min": 4252,
"brotli": 1977
}
},
{
"name": "counter 💧",
"user": {
"min": 96,
"brotli": 100
},
"runtime": {
"min": 2301,
"brotli": 1220
},
"total": {
"min": 2397,
"brotli": 1320
}
},
{
"name": "comments",
"user": {
"min": 694,
"brotli": 380
},
"runtime": {
"min": 6509,
"brotli": 2855
},
"total": {
"min": 7203,
"brotli": 3235
}
},
{
"name": "comments 💧",
"user": {
"min": 130,
"brotli": 110
},
"runtime": {
"min": 2453,
"brotli": 1257
},
"total": {
"min": 2583,
"brotli": 1367
}
}
]
}
================================================
FILE: LICENSE
================================================
The MIT License (MIT)
Copyright 2024 eBay Inc. and contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
================================================
FILE: SECURITY.md
================================================
# Security Policy
## Reporting a Vulnerability
Please report security issues **privately** using GitHub’s **Report a vulnerability** form on this repository (Security tab).
**Do not** file public GitHub issues for security problems.
When reporting, please include:
- Affected project/repo and version(s)
- Impact and component(s) involved
- Reproduction steps or PoC (if available)
- Your contact and preferred credit name
If you do not receive an acknowledgement of your report within **6 business days**, or if you cannot find a private security contact for the project, you may **escalate to the OpenJS Foundation CNA** at `security@lists.openjsf.org`.
If the project acknowledges your report but does not provide any further response or engagement within **14 days**, escalation is also appropriate.
## Coordination & Disclosure
We follow coordinated vulnerability disclosure:
- We will acknowledge your report, assess impact, and work on a fix.
- We aim to provide status updates at reasonable intervals until resolution.
- We will publish a security advisory (and **CVE via the OpenJS CNA when applicable**) once a fix or mitigation is available. We credit reporters by default unless you request otherwise.
================================================
FILE: babel.config.js
================================================
module.exports = (api) => ({
retainLines: true,
presets: [
[
"@babel/env",
{
loose: true,
targets: {
node: "20",
},
},
],
],
overrides: [
{
test: "./packages/runtime-class/src/**/*",
plugins: api.env("production")
? [
["babel-plugin-minprops", { matchPrefix: "___", context: "marko" }],
"./scripts/babel-plugin-marko-debug",
]
: [],
},
],
});
================================================
FILE: cspell.json
================================================
{
"version": "0.2",
"$schema": "https://raw.githubusercontent.com/streetsidesoftware/cspell/master/cspell.schema.json",
"words": [
"marko",
"markoc",
"markojs",
"taglib",
"Taglib",
"TAGLIB",
"taglibs",
"Taglibs",
"htmljs",
"HTMLJS",
"vdom",
"Vdom",
"VDOM",
"vnode",
"vnodes",
"codegen",
"morphdom",
"renderbody",
"tagname",
"quasis",
"nodetype",
"runtimeid",
"inlines",
"webpacks",
"minprops",
"diffable",
"Diffable",
"autotest",
"devmode",
"styl",
"descs",
"deopt",
"deopts",
"browserslist",
"codemod",
"keygen",
"luxass",
"Piercey",
"mlrawlings",
"rturnq",
"feross",
"juliangruber",
"Greenkeeper",
"whatwg",
"npmjs",
"iojs",
"ebayui",
"userland",
"sourcemapping",
"treeshaken",
"prebundling",
"subcomponents",
"unkeyed",
"Autokeyed",
"autokeys",
"falsey",
"falseish",
"destructures",
"reorderer",
"Reorderer",
"renderable",
"Renderable",
"interactable",
"downstreams",
"Downstreams",
"downtranspiles",
"autoloading",
"autodiscover",
"autodiscovers",
"expando",
"weakmaps",
"macrotask",
"charset",
"charcode",
"charcodes",
"fnmatch",
"extglob",
"extglobs",
"nullglob",
"noglobstar",
"noext",
"nocase",
"nobrace",
"nonegate",
"nonull",
"bsdglob",
"newcap",
"nocomment",
"kinded",
"callees",
"weakmaps",
"wbind",
"noopener",
"noreferrer",
"nomodule",
"modulepreload",
"fetchpriority",
"popovertarget",
"popovertargetaction",
"beforematch",
"onbeforematch",
"shadowrootmode",
"virtualkeyboardpolicy",
"stylesheet",
"noncryptographic",
"HPACK",
"Fastly",
"beresp",
"pingback",
"webmention",
"microdata",
"colgroup",
"datalist",
"fieldset",
"figcaption",
"optgroup",
"rowspan",
"srcdoc",
"srcset",
"usemap",
"enctype",
"novalidate",
"maxlength",
"autoplay",
"autofocus",
"formaction",
"formenctype",
"formmethod",
"formnovalidate",
"formtarget",
"hreflang",
"referrerpolicy",
"contenteditable",
"tabindex",
"inputmode",
"itemprop",
"itemref",
"itemscope",
"itemtype",
"playsinline",
"disablepictureinpicture",
"disableremoteplayback",
"controlslist",
"intrinsicsize",
"srclang",
"noscript",
"quicktime",
"hgroup",
"samp",
"tspan",
"colcount",
"colindex",
"rowcount",
"rowindex",
"setsize",
"valuemax",
"valuemin",
"valuenow",
"valuetext",
"posinset",
"roledescription",
"haspopup",
"keyshortcuts",
"labelledby",
"describedby",
"flowto",
"multiselectable",
"alertdialog",
"columnheader",
"contentinfo",
"listitem",
"menuitemcheckbox",
"menuitemradio",
"progressbar",
"rowgroup",
"rowheader",
"spinbutton",
"tablist",
"treegrid",
"activedescendant",
"colindextext",
"rowindextext",
"onblur",
"onfocus",
"onclick",
"onresize",
"onstorage",
"onunload",
"ononline",
"onoffline",
"onpopstate",
"onhashchange",
"onpageshow",
"onpagehide",
"onbeforeunload",
"onbeforeprint",
"onafterprint",
"onlanguagechange",
"onredo",
"onundo",
"ondrag",
"ondragend",
"ondragenter",
"ondragleave",
"ondragover",
"ondragstart",
"ondrop",
"oncanplay",
"oncanplaythrough",
"oncontextmenu",
"oncuechange",
"ondblclick",
"ondurationchange",
"onemptied",
"onloadeddata",
"onloadedmetadata",
"onloadstart",
"onmousedown",
"onmousemove",
"onmouseout",
"onmouseover",
"onmouseup",
"onmousewheel",
"onpause",
"onplay",
"onplaying",
"onratechange",
"onreset",
"onscroll",
"onseeked",
"onseeking",
"onselect",
"onshow",
"onstalled",
"onsubmit",
"onsuspend",
"ontimeupdate",
"onvolumechange",
"onwaiting",
"dropeffect",
"elementtiming",
"enterkeyhint",
"autocapitalize",
"accesskey",
"exportparts",
"imagesrcset",
"nohref",
"noshade",
"cellspacing",
"charoff",
"codetype",
"marginheight",
"marginwidth",
"topmargin",
"bottommargin",
"leftmargin",
"rightmargin",
"bgcolor",
"longdesc",
"classid",
"keygen",
"maction",
"maligngroup",
"malignmark",
"menclose",
"merror",
"mfenced",
"mfile",
"mfrac",
"mglyph",
"mlabeledtr",
"mlongdiv",
"mmultiscripts",
"mpadded",
"mpath",
"mphantom",
"mprescripts",
"mroot",
"mrow",
"mscarries",
"mscarry",
"msgroup",
"msline",
"mspace",
"msqrt",
"msrow",
"mstack",
"mstyle",
"msub",
"msubsup",
"msup",
"mtable",
"mtext",
"munder",
"munderover",
"xlink",
"webkitdirectory",
"webworkers",
"ltrim",
"libc",
"miterlimit",
"linejoin",
"evenodd",
"noremoteplayback",
"noplaybackrate",
"nofullscreen",
"nodownload",
"posterimage",
"videofile",
"nqry",
"gentest",
"testling",
"jsonminify",
"pppconfig",
"pppoe",
"pppoeconf",
"bkuri",
"impp",
"closedby",
"closerequest",
"scrollmonitor",
"Datatest",
"tryonline",
"Huncwot",
"Hyperclick",
"Subresource",
"Protip",
"esque",
"newcap",
"MUID",
"SVGM",
"TSBASETYPE",
"TSTYPE",
"TSTYPEELEMENT",
"MODULEDECLARATION",
"IMPORTOREXPORTDECLARATION",
"TIMEDOUT",
"timedout",
"argly",
"onattach",
"ondetach",
"ondomready",
"autopictureinpicture",
"bday",
"autoinitialization",
"overcomplicating",
"Prettyprinting",
"brainer",
"Ahhhh",
"Khoon",
"Kelleher",
"Aberer",
"Perini",
"Addy",
"Osmani",
"Rigsby",
"afph",
"afpha",
"afphc",
"strs",
"oogle",
"onwarn",
"buttn",
"dont",
"imagesizes",
"treeitems"
],
"ignoreRegExpList": [],
"files": ["*"],
"ignorePaths": [
"dist",
"fixtures",
"fixtures-interop",
"**/node_modules",
"**/CHANGELOG.md"
]
}
================================================
FILE: eslint.config.mjs
================================================
import eslint from "@eslint/js";
import sortImportPlugin from "eslint-plugin-simple-import-sort";
import globals from "globals";
import tseslint from "typescript-eslint";
export default tseslint.config(
{
ignores: [
"!packages/runtime-class/src/node_modules",
".cache",
".sizes",
".vscode",
"**/__snapshots__",
"**/*.marko.js",
"**/*actual*",
"**/*dist/",
"**/*expected*",
"**/snapshots",
"**/test/**/input.js",
"coverage",
"node_modules",
],
},
eslint.configs.recommended,
...tseslint.configs.recommended,
{
languageOptions: {
globals: {
...globals.mocha,
...globals.browser,
...globals.node,
},
},
plugins: {
"simple-import-sort": sortImportPlugin,
},
rules: {
"simple-import-sort/imports": "error",
"simple-import-sort/exports": "error",
"@typescript-eslint/no-empty-function": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-import-type-side-effects": "error",
"@typescript-eslint/no-non-null-assertion": "off",
"@typescript-eslint/no-unused-expressions": "off",
"@typescript-eslint/no-require-imports": "off",
"@typescript-eslint/no-duplicate-enum-values": "off",
"@typescript-eslint/no-unused-vars": "off",
"@typescript-eslint/no-empty-object-type": "off",
},
},
);
================================================
FILE: package.json
================================================
{
"name": "marko-project",
"private": true,
"workspaces": [
"./packages/*"
],
"scripts": {
"@ci:build": "npm run build",
"@ci:lint": "eslint --format unix . && prettier . --check --with-node-modules --log-level=warn",
"@ci:release": "npm run build && node scripts/pkg-override && changeset publish && node scripts/pkg-override && npm ci",
"@ci:release-alias": "node -r ~ts scripts/publish-alias.ts",
"@ci:test": "cross-env NODE_OPTIONS=\"--max-old-space-size=4096\" MARKO_DEBUG=1 c8 npm test",
"@ci:version": "npm run build && npm run format && changeset version && npm i --package-lock-only",
"build": "npm run build --ws && npm run build:types",
"build:sizes": "node -r ~ts scripts/sizes",
"build:types": "npx tsc --noEmit packages/runtime-tags/index.d.ts && npx tsc --noEmit packages/runtime-class/index.d.ts && tsc -b tsconfig.build.json",
"change": "changeset add",
"compile": "node -r ~ts scripts/inspect-compiled-output.ts",
"format": "eslint --format unix --fix .; prettier . --write --with-node-modules --log-level=warn",
"lint": "eslint --format unix . && prettier . --check --with-node-modules --log-level=warn && cspell \"**/*.{md,ts,js,marko}\"",
"prepare": "husky && patch-package && npm run build-babel-types -w @marko/compiler",
"report": "open ./coverage/lcov-report/index.html",
"test": "mocha",
"test:update": "UPDATE_EXPECTATIONS=1 mocha --update"
},
"devDependencies": {
"@babel/cli": "^7.28.6",
"@babel/code-frame": "^7.29.0",
"@babel/core": "^7.29.0",
"@babel/generator": "^7.29.1",
"@babel/parser": "^7.29.0",
"@babel/plugin-syntax-typescript": "^7.28.6",
"@babel/plugin-transform-modules-commonjs": "^7.28.6",
"@babel/plugin-transform-typescript": "^7.28.6",
"@babel/preset-env": "^7.29.0",
"@babel/preset-typescript": "^7.28.5",
"@babel/register": "^7.28.6",
"@babel/traverse": "^7.29.0",
"@babel/types": "^7.29.0",
"@changesets/changelog-github": "^0.6.0",
"@changesets/cli": "^2.30.0",
"@ebay/browserslist-config": "^2.13.0",
"@eslint/js": "^10.0.1",
"@rollup/plugin-terser": "^1.0.0",
"@rollup/plugin-virtual": "^3.0.2",
"@types/babel__code-frame": "^7.27.0",
"@types/babel__core": "^7.20.5",
"@types/babel__generator": "^7.27.0",
"@types/babel__traverse": "^7.28.0",
"@types/js-beautify": "^1.14.3",
"@types/jsdom": "^28.0.0",
"@types/mocha": "^10.0.10",
"@types/node": "^25.3.3",
"~ts": "file:scripts/babel-register.js",
"babel-plugin-minprops": "^2.0.1",
"bluebird": "^3.7.2",
"c8": "^11.0.0",
"chai": "^4.4.1",
"cross-env": "^10.1.0",
"cspell": "^9.7.0",
"diffable-html": "^6.0.1",
"esbuild": "^0.27.3",
"eslint": "^10.0.2",
"eslint-formatter-unix": "^9.0.1",
"eslint-plugin-simple-import-sort": "^12.1.1",
"express": "^5.2.1",
"globals": "^17.4.0",
"husky": "^9.1.7",
"it-fails": "^1.0.9",
"js-beautify": "^1.15.4",
"jsdom": "^28.1.0",
"jsdom-context-require": "^5.2.8",
"kleur": "^4.1.5",
"lint-staged": "^16.3.2",
"mocha": "^11.7.5",
"mocha-autotest": "^1.1.3",
"mocha-snap": "^5.0.1",
"patch-package": "^8.0.1",
"prettier": "^3.8.1",
"prettier-plugin-packagejson": "^3.0.2",
"pretty-format": "^30.2.0",
"rolldown": "^1.0.0-rc.7",
"rollup": "^4.59.0",
"table": "^6.9.0",
"through": "^2.3.8",
"through2": "^4.0.2",
"tiny-glob": "^0.2.9",
"typescript": "^5.9.3",
"typescript-eslint": "^8.56.1"
}
}
================================================
FILE: packages/compiler/CHANGELOG.md
================================================
# Change Log
## 5.39.62
### Patch Changes
- [#3133](https://github.com/marko-js/marko/pull/3133) [`1ca1a71`](https://github.com/marko-js/marko/commit/1ca1a71d0f07c2e9e233899c4677005026873942) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add validations around tags api attribute names.
## 5.39.61
### Patch Changes
- [#3130](https://github.com/marko-js/marko/pull/3130) [`2dc2152`](https://github.com/marko-js/marko/commit/2dc21520fbd1029c55c7e6c8c4f1a641d5cb8b90) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support bound attribute modifiers as a way to cast change handler values.
## 5.39.60
### Patch Changes
- [#3119](https://github.com/marko-js/marko/pull/3119) [`109e423`](https://github.com/marko-js/marko/commit/109e4237b2ba12cc1db11f345614e62ab5d675e0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where babel internal api was not correctly using package overrides when publishing.
## 5.39.59
### Patch Changes
- [#3117](https://github.com/marko-js/marko/pull/3117) [`e0419aa`](https://github.com/marko-js/marko/commit/e0419aaea01c9125fc5b67cfb51ed5fabb674dbb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrades eslint which captured some unecessary variable initializations and assignments.
- [#3118](https://github.com/marko-js/marko/pull/3118) [`1961089`](https://github.com/marko-js/marko/commit/1961089c02743978cc4887346ff293a160d5139a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid loading babel configs when babel is not installed locally.
## 5.39.58
### Patch Changes
- [#3110](https://github.com/marko-js/marko/pull/3110) [`900a3d5`](https://github.com/marko-js/marko/commit/900a3d54a97606fb8be1a4b7d90d03313d5d7643) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure types stripped before transform phase in compiler.
## 5.39.57
### Patch Changes
- [#3108](https://github.com/marko-js/marko/pull/3108) [`97cf126`](https://github.com/marko-js/marko/commit/97cf126772fa4521f171d3d968b18a11c6e0028f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with translating concise mode tags api style tag.
- [#3108](https://github.com/marko-js/marko/pull/3108) [`f1a93a7`](https://github.com/marko-js/marko/commit/f1a93a7f4a0230aa57cf62aea094db370e0a0fad) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade htmljs-parser to fix a concise mode whitespace normalization issue.
## 5.39.56
### Patch Changes
- [#3097](https://github.com/marko-js/marko/pull/3097) [`f774948`](https://github.com/marko-js/marko/commit/f774948773e89c4f7e4564fa2eb1c0cc7569bbfa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Revert a recent change to preserve parenthesized expressions in the compiler.
This caused a regression through some analysis which did not account for parenthesized expressions.
- [#3096](https://github.com/marko-js/marko/pull/3096) [`3efe00f`](https://github.com/marko-js/marko/commit/3efe00f53244a3d9c2558e6926dcea601b9ff838) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Normalize controllable values following the same rules as DOM normalization before triggering change handlers.
## 5.39.55
### Patch Changes
- [#3081](https://github.com/marko-js/marko/pull/3081) [`a6bfcdc`](https://github.com/marko-js/marko/commit/a6bfcdce1174e37b76cce297e859646fdecd7adc) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression that prevented loading @marko/compiler in the browser.
## 5.39.54
### Patch Changes
- [#3079](https://github.com/marko-js/marko/pull/3079) [`06842e9`](https://github.com/marko-js/marko/commit/06842e9bd39ccf3b9b5fc25f4de33e9c399f954b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Bundle babel with rolldown instead of esbuild (produces smaller bundle).
## 5.39.53
### Patch Changes
- [#3077](https://github.com/marko-js/marko/pull/3077) [`020dfd4`](https://github.com/marko-js/marko/commit/020dfd4bbb780aa83f2233097217d0cb27b3e26a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure browserslist is an optional dependency with bundled babel.
## 5.39.52
### Patch Changes
- [#3075](https://github.com/marko-js/marko/pull/3075) [`fe579b5`](https://github.com/marko-js/marko/commit/fe579b53fb5b3341654268a68546d48a39bde57a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add stub types for babel packages in internal compiler api.
## 5.39.51
### Patch Changes
- [#3073](https://github.com/marko-js/marko/pull/3073) [`1aabdc3`](https://github.com/marko-js/marko/commit/1aabdc30bb7fa3b82e76a5b4724f469133f14c85) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove direct dependency on babel, refactor to use internal copy.
## 5.39.50
### Patch Changes
- [#3071](https://github.com/marko-js/marko/pull/3071) [`c5d31de`](https://github.com/marko-js/marko/commit/c5d31de1b55b26ffb746b7a03b01f2ce26ba0981) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix babel ast patching logic to work with latest babel.
## 5.39.49
### Patch Changes
- [#3061](https://github.com/marko-js/marko/pull/3061) [`0134076`](https://github.com/marko-js/marko/commit/0134076c0e11173a5e9c377aefb0d9709a3a6415) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add ability for generated template ids to be overwritten via compiler config.
## 5.39.48
### Patch Changes
- [#3044](https://github.com/marko-js/marko/pull/3044) [`2a43f7e`](https://github.com/marko-js/marko/commit/2a43f7e4147553779133a94c88f8c965fc8dd19f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve logic around building up analyzed watch files.
## 5.39.47
### Patch Changes
- [#3028](https://github.com/marko-js/marko/pull/3028) [`72a614d`](https://github.com/marko-js/marko/commit/72a614d9494f1b65060310b7abc0c54d1fd4767b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with var's inside scriptlets having incorrect scoping.
## 5.39.46
### Patch Changes
- [#3024](https://github.com/marko-js/marko/pull/3024) [`f634f38`](https://github.com/marko-js/marko/commit/f634f38d6dfffd72c23b4ec7e7bf5596ebd0b5de) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Use compiler modules api to read CWD in interop code.
## 5.39.45
### Patch Changes
- [#3001](https://github.com/marko-js/marko/pull/3001) [`792dd1d`](https://github.com/marko-js/marko/commit/792dd1d5d193554889f7ba6e734c1730b947cf2d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose Marko target api on compiled meta data.
- [#2999](https://github.com/marko-js/marko/pull/2999) [`d2f437b`](https://github.com/marko-js/marko/commit/d2f437bf7118c3160a4f4c9cf977b8396d9fc8db) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add support for "use class" comment to opt into to class api when exclusive `tags` folders prefer tags api.
- [#2999](https://github.com/marko-js/marko/pull/2999) [`d2f437b`](https://github.com/marko-js/marko/commit/d2f437bf7118c3160a4f4c9cf977b8396d9fc8db) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add exclusive `tags` folder discovery as a "prefer tags api" heuristic in interop mode.
## 5.39.44
### Patch Changes
- [#2996](https://github.com/marko-js/marko/pull/2996) [`1a65ff3`](https://github.com/marko-js/marko/commit/1a65ff3f4ed31b1e3fab37328962950db28a68e6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Move strip types logic to be after transform phase.
- [#2994](https://github.com/marko-js/marko/pull/2994) [`1bf2788`](https://github.com/marko-js/marko/commit/1bf2788042fd3e6928303c5782909612a59c5206) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure MarkoScriptlet's are visited for outer binding identifiers.
- [#2996](https://github.com/marko-js/marko/pull/2996) [`2a23dec`](https://github.com/marko-js/marko/commit/2a23decc64b3dbfea024241b1301dba7f6d69679) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Run parse hooks after the main parse phase is complete.
## 5.39.43
### Patch Changes
- [#2983](https://github.com/marko-js/marko/pull/2983) [`fdc46fb`](https://github.com/marko-js/marko/commit/fdc46fb3e762595a43fd1fa2f714af7f8819d341) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Default title tag to be text only for Marko 6.
- [#2978](https://github.com/marko-js/marko/pull/2978) [`55fd324`](https://github.com/marko-js/marko/commit/55fd324c3f4ea00535856c7719f8b4c46f55de40) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update compiler to avoid mutating translator visitors.
- [#2983](https://github.com/marko-js/marko/pull/2983) [`fdc46fb`](https://github.com/marko-js/marko/commit/fdc46fb3e762595a43fd1fa2f714af7f8819d341) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Normalize taglib ids to be consistent with register ids and across Marko 5/6.
## 5.39.42
### Patch Changes
- [#2949](https://github.com/marko-js/marko/pull/2949) [`6648a22`](https://github.com/marko-js/marko/commit/6648a2229084e3ae431c175fb283e41b9bb1dab5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow compiler import helper to be used outside of translate.
## 5.39.41
### Patch Changes
- [#2906](https://github.com/marko-js/marko/pull/2906) [`c6a9c12`](https://github.com/marko-js/marko/commit/c6a9c125e82d9a1fbb158677cc8c26a94d80e2ec) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with incorrect babel scopes after stripping types.
## 5.39.40
### Patch Changes
- [#2859](https://github.com/marko-js/marko/pull/2859) [`22112e5`](https://github.com/marko-js/marko/commit/22112e524cf12baf0b119a5ad3417145459a159c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure markoOpts is always accurate when running child template analysis.
## 5.39.39
### Patch Changes
- [#2855](https://github.com/marko-js/marko/pull/2855) [`29173ce`](https://github.com/marko-js/marko/commit/29173ced3806d932eb05dc14002fc4969ef4ac6b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure scopes are crawled before stripping types.
## 5.39.38
### Patch Changes
- [#2853](https://github.com/marko-js/marko/pull/2853) [`b52a62f`](https://github.com/marko-js/marko/commit/b52a62f3ae5d07bee23685289aec169476820f69) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure stripTypes compiler option is applied when targeting source output.
## 5.39.37
### Patch Changes
- [#2834](https://github.com/marko-js/marko/pull/2834) [`5c9a37f`](https://github.com/marko-js/marko/commit/5c9a37fa17c6a2f5f771c919b8415e4dfb25fca4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue striping type specifiers in imports.
## 5.39.36
### Patch Changes
- [#2830](https://github.com/marko-js/marko/pull/2830) [`9a688af`](https://github.com/marko-js/marko/commit/9a688af3c92a73ae7492cdaa4b9ff1e0b2f9127e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with static/server/client statements with type imports not properly being stripped.
## 5.39.35
### Patch Changes
- [#2823](https://github.com/marko-js/marko/pull/2823) [`58c2165`](https://github.com/marko-js/marko/commit/58c21653aa0a1d6e1db208c36a1a584b44ba2ff0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure type stripping runs before transform phase in compiler.
## 5.39.34
### Patch Changes
- [#2815](https://github.com/marko-js/marko/pull/2815) [`ed8d064`](https://github.com/marko-js/marko/commit/ed8d064d154532cfa7c12be524d6b47556da0c7f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure `@marko/compiler/modules` always uses packagem name imports for easier aliasing in website tooling.
## 5.39.33
### Patch Changes
- [#2756](https://github.com/marko-js/marko/pull/2756) [`46f1f90`](https://github.com/marko-js/marko/commit/46f1f9075043754aadec1175db5885f72c84e016) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve tags api compat.
## 5.39.32
### Patch Changes
- [#2753](https://github.com/marko-js/marko/pull/2753) [`9ba0cab`](https://github.com/marko-js/marko/commit/9ba0cab6474e7cd483b93992be5b8b5e7c8df0aa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update package dependencies.
## 5.39.31
### Patch Changes
- [#2749](https://github.com/marko-js/marko/pull/2749) [`9e0684f`](https://github.com/marko-js/marko/commit/9e0684f1171d7ab8364be719c4cf5b62df78126c) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Prevent loss of comments in a scriptlet without statements
## 5.39.30
### Patch Changes
- [#2743](https://github.com/marko-js/marko/pull/2743) [`5b3ca5c`](https://github.com/marko-js/marko/commit/5b3ca5ce79b2a90ef505f290c6b17344ebcf3372) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Minor improvements to class/id shorthand parsing.
## 5.39.29
### Patch Changes
- [#2734](https://github.com/marko-js/marko/pull/2734) [`b6ba333`](https://github.com/marko-js/marko/commit/b6ba333ee289ff27a549d1a2ea60b06338cb7ef5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade all deps. Fix support for [discard binding proposal](https://github.com/tc39/proposal-discard-binding).
## 5.39.28
### Patch Changes
- [#2715](https://github.com/marko-js/marko/pull/2715) [`e60a20f`](https://github.com/marko-js/marko/commit/e60a20f7e2dcbdb2dcfa45bc15f2901ffd0443c7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove script tag definition that caused a conflict when in interop mode.
- [#2715](https://github.com/marko-js/marko/pull/2715) [`dc178ce`](https://github.com/marko-js/marko/commit/dc178ced9f75aac923f3c5b043aa40d62e8d0f4d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Move translator loading logic back into shared utility. Moving this out caused a regression for tools that call `getRuntimeEntryFiles` or `taglib.buildLookup` directly.
## 5.39.27
### Patch Changes
- [#2713](https://github.com/marko-js/marko/pull/2713) [`2d11230`](https://github.com/marko-js/marko/commit/2d11230f012397681f63071ea9b33b246b45f9ad) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using "util" module to improve browser compat of compiler.
## 5.39.26
### Patch Changes
- [#2707](https://github.com/marko-js/marko/pull/2707) [`89d0196`](https://github.com/marko-js/marko/commit/89d019678ecfb004af9b5892482d6af9d6178c4d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix false positive interop checks.
## 5.39.25
### Patch Changes
- [#2705](https://github.com/marko-js/marko/pull/2705) [`75eaa9d`](https://github.com/marko-js/marko/commit/75eaa9d833f6711b5b60757ef02ca987fc310b01) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using process api in compiler to make it easier to load in environments without it.
## 5.39.24
### Patch Changes
- [#2703](https://github.com/marko-js/marko/pull/2703) [`f67361b`](https://github.com/marko-js/marko/commit/f67361bc52191c9092833438868f09bb583252e1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Load interop translator by default if installed.
## 5.39.23
### Patch Changes
- [#2701](https://github.com/marko-js/marko/pull/2701) [`8f68b6e`](https://github.com/marko-js/marko/commit/8f68b6efc960a3e59f59cbb49c549a248a03a79f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression where explicitly passing in `undefined` for translator was not loading the default translator.
## 5.39.22
### Patch Changes
- [#2699](https://github.com/marko-js/marko/pull/2699) [`dc3ee34`](https://github.com/marko-js/marko/commit/dc3ee348e9b95c12bf74d4212a82756d7ad90a18) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid node:crypto - use custom hash algo for component ids.
## 5.39.21
### Patch Changes
- [#2696](https://github.com/marko-js/marko/pull/2696) [`eefa829`](https://github.com/marko-js/marko/commit/eefa829038b5bdd6edbbf95cef61e152e91ca9ec) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve internal module loading api. Ensure all taglib requires happen relative to project dir.
## 5.39.20
### Patch Changes
- [#2691](https://github.com/marko-js/marko/pull/2691) [`0758ae7`](https://github.com/marko-js/marko/commit/0758ae72e3a3da9fdf1dca37001aa6e8479655f9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where scriptlets with comments were being printed without brackets when printing the marko ast.
## 5.39.19
### Patch Changes
- [#2648](https://github.com/marko-js/marko/pull/2648) [`3b883d4`](https://github.com/marko-js/marko/commit/3b883d4d9729e5b13bb0e8d19850c087d0e8245f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where tags added from the translator were given lower priority than tags added by the core compiler.
## 5.39.18
### Patch Changes
- [#2636](https://github.com/marko-js/marko/pull/2636) [`dc748b4`](https://github.com/marko-js/marko/commit/dc748b4932c1db3f556d4fc898ab47911828b6b6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add parenthesized expressions to the list of computable values.
## 5.39.17
### Patch Changes
- [#2623](https://github.com/marko-js/marko/pull/2623) [`525345f`](https://github.com/marko-js/marko/commit/525345f4f71c53c00d7779a4c5d95fceaec3d33b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Refactor getFile and getProgram handling to avoid circular references between babel-utils and babel-plugin code.
## 5.39.16
### Patch Changes
- [#2621](https://github.com/marko-js/marko/pull/2621) [`aad5a8d`](https://github.com/marko-js/marko/commit/aad5a8d9473d0add9093f84bd570af8d47e0a4db) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose getProgram and getFile apis from @marko/compiler/babel-utils. Exposing it directly from the compiler was causing an issue with the website.
## 5.39.15
### Patch Changes
- [#2607](https://github.com/marko-js/marko/pull/2607) [`7110193`](https://github.com/marko-js/marko/commit/7110193bffa170a662549265c33996691f17453e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose getProgram and getFile apis for accessing the file/program of the active compilation.
## 5.39.14
### Patch Changes
- [#2589](https://github.com/marko-js/marko/pull/2589) [`765915a`](https://github.com/marko-js/marko/commit/765915ad423827bcdec6281413c59ecda173a80d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue when using with latest version of babel.
## 5.39.13
### Patch Changes
- [#2534](https://github.com/marko-js/marko/pull/2534) [`cfca41a`](https://github.com/marko-js/marko/commit/cfca41ac8c571d1fecb3b889df5eead1dfe06130) Thanks [@rturnq](https://github.com/rturnq)! - Add support for tag varaible hoisting
## 5.39.12
### Patch Changes
- [#2485](https://github.com/marko-js/marko/pull/2485) [`09c0558`](https://github.com/marko-js/marko/commit/09c0558a1b26df2d828d56bd853f885a17683e38) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure Marko 5 renderBodies are serialized properly across the compat layer.
## 5.39.11
### Patch Changes
- [#2470](https://github.com/marko-js/marko/pull/2470) [`218c436`](https://github.com/marko-js/marko/commit/218c43674e478062cdbc0fcbaef0dc13cd79107f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve tags / class api interop layer for destroyed tags.
## 5.39.10
### Patch Changes
- [#2453](https://github.com/marko-js/marko/pull/2453) [`b4d73b0`](https://github.com/marko-js/marko/commit/b4d73b0ab2ca2e07ec27172015ce7dd68ad1312f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose @marko/compiler/babel-utils as a top level file for legacy resolvers.
## 5.39.9
### Patch Changes
- [#2451](https://github.com/marko-js/marko/pull/2451) [`602eaad`](https://github.com/marko-js/marko/commit/602eaad0a48047b2fb678b8e77d6b345a0930b8d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid swallowing errors when resolved paths in marko.json files could not be resolve (now leaves the value as is, previously would ignore the path).
- [#2449](https://github.com/marko-js/marko/pull/2449) [`6cf4978`](https://github.com/marko-js/marko/commit/6cf4978d765914e1d1c3ee62a3c691ce20c4903b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support aggregate errors when final error is a HTMLJS parser error.
## 5.39.8
### Patch Changes
- [#2445](https://github.com/marko-js/marko/pull/2445) [`b12d7a9`](https://github.com/marko-js/marko/commit/b12d7a9b76dd9fca89ed717b8491b08d5e927fe0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add engines field to package.json
## 5.39.7
### Patch Changes
- [#2438](https://github.com/marko-js/marko/pull/2438) [`4b6c613`](https://github.com/marko-js/marko/commit/4b6c6135badad6db7e4a8f0f59fb005ed66b04fa) Thanks [@mlrawlings](https://github.com/mlrawlings)! - use tags/ instead of components/ for runtime-tags
- [#2439](https://github.com/marko-js/marko/pull/2439) [`8ebe566`](https://github.com/marko-js/marko/commit/8ebe566854179ad8cf8cfca7858d607ab208c01e) Thanks [@mlrawlings](https://github.com/mlrawlings)! - fix: remove duplicate imports of compat runtime
## 5.39.6
### Patch Changes
- [#2434](https://github.com/marko-js/marko/pull/2434) [`6a235a8`](https://github.com/marko-js/marko/commit/6a235a88813cd45a8704060e4fac3ed82c2f3437) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve registry id normalization.
## 5.39.5
### Patch Changes
- [#2426](https://github.com/marko-js/marko/pull/2426) [`2142dfd`](https://github.com/marko-js/marko/commit/2142dfd05d6b6ebc5f55883ca13a15847cdb07fa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Use statement parsing for script tag to improve sourcemap accuracy.
- [#2426](https://github.com/marko-js/marko/pull/2426) [`2142dfd`](https://github.com/marko-js/marko/commit/2142dfd05d6b6ebc5f55883ca13a15847cdb07fa) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where negative sourcemap offets leaning to the previous line were outputting incorrect values.
## 5.39.4
### Patch Changes
- [`e60bd4f`](https://github.com/marko-js/marko/commit/e60bd4fd25ccee475dad49195fca64024a6164bf) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix incorrect filepath for marko babel transform.
## 5.39.3
### Patch Changes
- [#2420](https://github.com/marko-js/marko/pull/2420) [`4a980fe`](https://github.com/marko-js/marko/commit/4a980fe444299f095f0f423767d5340e15c33682) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix publish alias issue.
## 5.39.2
### Patch Changes
- [#2418](https://github.com/marko-js/marko/pull/2418) [`00e7392`](https://github.com/marko-js/marko/commit/00e7392361a17f49345400d53644bcee13e9b375) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue when parsing embedded script code with negative offset locations.
## 5.39.1
### Patch Changes
- [#2416](https://github.com/marko-js/marko/pull/2416) [`619c87f`](https://github.com/marko-js/marko/commit/619c87faeebc31f6885bbb868fc89bab8a90ebea) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix package json repository config.
## 5.39.0
### Minor Changes
- [#2408](https://github.com/marko-js/marko/pull/2408) [`2be37f7`](https://github.com/marko-js/marko/commit/2be37f72d3030621e2f85b6615731a5af24e0211) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Merge translator packages into their respective runtime packages.
## 5.38.5
### Patch Changes
- [#2404](https://github.com/marko-js/marko/pull/2404) [`fbc0cef`](https://github.com/marko-js/marko/commit/fbc0cefb860cd91142231df04c05b7e4c0d1b1ee) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade all dependencies. Fix support for latest babel version.
- Updated dependencies [[`fbc0cef`](https://github.com/marko-js/marko/commit/fbc0cefb860cd91142231df04c05b7e4c0d1b1ee)]:
- @marko/babel-utils@6.6.3
## 5.38.4
### Patch Changes
- [#2401](https://github.com/marko-js/marko/pull/2401) [`46f8d7c`](https://github.com/marko-js/marko/commit/46f8d7cfba231d1ab724fec83f07d1192d5d4d7f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add support for tags API script tag.
- Updated dependencies [[`032afa1`](https://github.com/marko-js/marko/commit/032afa125b19969346639ac99ae9740521d0c3a2)]:
- @marko/babel-utils@6.6.2
## 5.38.3
### Patch Changes
- [#2395](https://github.com/marko-js/marko/pull/2395) [`00cc3fb`](https://github.com/marko-js/marko/commit/00cc3fbe934d96a644175cc86cd72221131a884d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where lasso manifest file paths were not being provided correctly for lasso-marko.
## 5.38.2
### Patch Changes
- [#2387](https://github.com/marko-js/marko/pull/2387) [`8e67da0`](https://github.com/marko-js/marko/commit/8e67da0f725ad5074a1bf933cb75ca569d21f2d7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with an attribute tag containing only a spread.
## 5.38.1
### Patch Changes
- [#2383](https://github.com/marko-js/marko/pull/2383) [`133b562`](https://github.com/marko-js/marko/commit/133b562c19081402330e4054eabc49a4ce635274) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Partially revert #2380 which was causing non idempotent builds.
- Updated dependencies [[`133b562`](https://github.com/marko-js/marko/commit/133b562c19081402330e4054eabc49a4ce635274)]:
- @marko/babel-utils@6.6.1
## 5.38.0
### Minor Changes
- [#2380](https://github.com/marko-js/marko/pull/2380) [`c5d2b48`](https://github.com/marko-js/marko/commit/c5d2b4871e9dab7037a624681d0161b72fdc799d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Replace `optimizeKnownTemplates` with a better an simpler `optimizeRegistryId` api.
### Patch Changes
- Updated dependencies [[`c5d2b48`](https://github.com/marko-js/marko/commit/c5d2b4871e9dab7037a624681d0161b72fdc799d)]:
- @marko/babel-utils@6.6.0
## 5.37.26
### Patch Changes
- [#2368](https://github.com/marko-js/marko/pull/2368) [`bb44af0`](https://github.com/marko-js/marko/commit/bb44af04b1ad29d14200ff5cff26b27a39ce446e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with "package: " deps (used for lasso) not being hoisted when building the hydrate output.
## 5.37.25
### Patch Changes
- [#2367](https://github.com/marko-js/marko/pull/2367) [`c8e943d`](https://github.com/marko-js/marko/commit/c8e943d30ea621356b14ce5a2bf8c040f9d41f82) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ignore errors from child template analysis (assume child will be compiled after imported anyway).
- [#2365](https://github.com/marko-js/marko/pull/2365) [`894d0d0`](https://github.com/marko-js/marko/commit/894d0d05daddee107640f83bcd8a11f46b4e359b) Thanks [@rturnq](https://github.com/rturnq)! - Expose globalConfig and fix config default export
- Updated dependencies [[`c8e943d`](https://github.com/marko-js/marko/commit/c8e943d30ea621356b14ce5a2bf8c040f9d41f82)]:
- @marko/babel-utils@6.5.13
## 5.37.24
### Patch Changes
- [#2358](https://github.com/marko-js/marko/pull/2358) [`76951d8`](https://github.com/marko-js/marko/commit/76951d887d02e6f0dd3f0fe1345721d4a94a0069) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Always use MarkoTagBody AST nodes for control flow (even with attribute tags). This fixes a regression with the @marko/tags-api-preview and is more accurate to what is actually happening, especially from a variable scoping perspective.
- Updated dependencies [[`76951d8`](https://github.com/marko-js/marko/commit/76951d887d02e6f0dd3f0fe1345721d4a94a0069)]:
- @marko/babel-utils@6.5.12
## 5.37.23
### Patch Changes
- [#2346](https://github.com/marko-js/marko/pull/2346) [`8ec88ff`](https://github.com/marko-js/marko/commit/8ec88fff87ef40ce19aba8992e075a839a61683e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Switch back to using babels startIndex api since the regression has been fixed.
- [#2344](https://github.com/marko-js/marko/pull/2344) [`bafeac1`](https://github.com/marko-js/marko/commit/bafeac1db6acc73e5c38ade2a078485df28670b8) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize circular reference child template analysis.
- Updated dependencies [[`8ec88ff`](https://github.com/marko-js/marko/commit/8ec88fff87ef40ce19aba8992e075a839a61683e), [`bafeac1`](https://github.com/marko-js/marko/commit/bafeac1db6acc73e5c38ade2a078485df28670b8)]:
- @marko/babel-utils@6.5.10
## 5.37.22
### Patch Changes
- [#2342](https://github.com/marko-js/marko/pull/2342) [`8e07673`](https://github.com/marko-js/marko/commit/8e07673ca07cc83d9910c68ff8359264015c28d1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Make attribute tags a property on the MarkoTag AST and refactor how attribute tags are translated.
- Updated dependencies [[`8e07673`](https://github.com/marko-js/marko/commit/8e07673ca07cc83d9910c68ff8359264015c28d1)]:
- @marko/babel-utils@6.5.9
## 5.37.21
### Patch Changes
- [#2338](https://github.com/marko-js/marko/pull/2338) [`033adb9`](https://github.com/marko-js/marko/commit/033adb92de3e40f24614e0de9d438f6390843a84) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure that errors discovered while loading optional module level taglibs are forwarded through the onError api.
## 5.37.20
### Patch Changes
- [#2334](https://github.com/marko-js/marko/pull/2334) [`212fbd0`](https://github.com/marko-js/marko/commit/212fbd063d046d865bb3e8f996db91060b6651b2) Thanks [@LuLaValva](https://github.com/LuLaValva)! - TypeScript dependency fix
- [#2337](https://github.com/marko-js/marko/pull/2337) [`ea95de1`](https://github.com/marko-js/marko/commit/ea95de1deaaa03bf2bc57b2518954084dbc1442f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid babel `startColumn` api until https://github.com/babel/babel/pull/16936 is merged.
- Updated dependencies [[`ea95de1`](https://github.com/marko-js/marko/commit/ea95de1deaaa03bf2bc57b2518954084dbc1442f)]:
- @marko/babel-utils@6.5.8
## 5.37.19
### Patch Changes
- [#2324](https://github.com/marko-js/marko/pull/2324) [`4776e33`](https://github.com/marko-js/marko/commit/4776e334ed8f4f70559042d28007dfa447942693) Thanks [@rturnq](https://github.com/rturnq)! - Allow child template analysis on manually imported tags in translator-default and optimize direct reference of imported tag
## 5.37.18
### Patch Changes
- [#2322](https://github.com/marko-js/marko/pull/2322) [`420405d`](https://github.com/marko-js/marko/commit/420405db952fcedafed0cb48d86620ca53bb2f1d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove the default cache auto clearing behavior.
Previously the default compiler "cache" was cleared every setImmediate. This was to support server hot reloading in apps using `Lasso` (and `browser-refresh`). Since we brought back support for `browser-refresh` in the Marko package we now clear this cache when browser-refresh triggers a change making the default cache clearing redundant.
## 5.37.17
### Patch Changes
- [#2320](https://github.com/marko-js/marko/pull/2320) [`13b3270`](https://github.com/marko-js/marko/commit/13b32707ed673dd3dabe6dfdb90fcf5a19448776) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize how style and script tags are diffed (similar to textarea) where the text nodes are concatenated and diffed as a whole.
- [#2320](https://github.com/marko-js/marko/pull/2320) [`a9da4d6`](https://github.com/marko-js/marko/commit/a9da4d64cf8116867ea80150f10c4dc8a45a0c98) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression from #2138 which caused nullable native dynamic tags with body contents to not output the end tag. 😱
## 5.37.16
### Patch Changes
- [#2318](https://github.com/marko-js/marko/pull/2318) [`1dbb189`](https://github.com/marko-js/marko/commit/1dbb189976ef56a28252fbf7da95ac18a3eadaf6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where a null able native tag with no body content (eg `<${show && "div}/>`) was incorrectly outputting a fragment for the body content (which did not exist).
## 5.37.15
### Patch Changes
- [#2310](https://github.com/marko-js/marko/pull/2310) [`f06d4b0`](https://github.com/marko-js/marko/commit/f06d4b0559c3fbb3af67773c70b3aab25278b0ca) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid babel compiler assert api to fix a regression.
- Updated dependencies [[`f06d4b0`](https://github.com/marko-js/marko/commit/f06d4b0559c3fbb3af67773c70b3aab25278b0ca)]:
- @marko/babel-utils@6.5.7
## 5.37.14
### Patch Changes
- [#2303](https://github.com/marko-js/marko/pull/2303) [`e6d117b`](https://github.com/marko-js/marko/commit/e6d117b67a3099ab0a29248d189de7b37b9d3d8a) Thanks [@rturnq](https://github.com/rturnq)! - Add frame property to compile errors
## 5.37.13
### Patch Changes
- [#2300](https://github.com/marko-js/marko/pull/2300) [`d45f91a`](https://github.com/marko-js/marko/commit/d45f91a5e0fff686cac7b7daf29deb60a6a1ffd7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where legacy compat `w-bind` directives were being incorrectly optimized as static vdom.
## 5.37.12
### Patch Changes
- [#2298](https://github.com/marko-js/marko/pull/2298) [`c01d83f`](https://github.com/marko-js/marko/commit/c01d83fb2617443a7dc03eb3b43a2f7752754a45) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with the "ignoreUnrecognizedTags" compiler option being used with dynamic tags that have attribute tags.
- [#2298](https://github.com/marko-js/marko/pull/2298) [`cfff311`](https://github.com/marko-js/marko/commit/cfff3111148a43f58c7d2b78f679c09c04d429b5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Removes the debug mode dom manipulation warning since chrome dropped the api's that allowed us to get useful stack traces.
## 5.37.11
### Patch Changes
- [#2296](https://github.com/marko-js/marko/pull/2296) [`81c5c0e`](https://github.com/marko-js/marko/commit/81c5c0e0436dc694f09c722f2103bfdc9cb3844f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issues related to recent babel changes.
- [#2296](https://github.com/marko-js/marko/pull/2296) [`81c5c0e`](https://github.com/marko-js/marko/commit/81c5c0e0436dc694f09c722f2103bfdc9cb3844f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve support for @marko/compat.
- Updated dependencies [[`81c5c0e`](https://github.com/marko-js/marko/commit/81c5c0e0436dc694f09c722f2103bfdc9cb3844f), [`81c5c0e`](https://github.com/marko-js/marko/commit/81c5c0e0436dc694f09c722f2103bfdc9cb3844f)]:
- @marko/babel-utils@6.5.6
## 5.37.10
### Patch Changes
- [#2294](https://github.com/marko-js/marko/pull/2294) [`c600610`](https://github.com/marko-js/marko/commit/c6006102479d8d10ffd1f18d13b8c607fbabd177) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with comment nodes in unescaped html by bringing back virtual comment nodes.
## 5.37.9
### Patch Changes
- [#2286](https://github.com/marko-js/marko/pull/2286) [`55338b5`](https://github.com/marko-js/marko/commit/55338b52969817b63c90ea84f30246ad0b94b6f9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize template literal printing in html output.
## 5.37.8
### Patch Changes
- [#2284](https://github.com/marko-js/marko/pull/2284) [`d0723d3`](https://github.com/marko-js/marko/commit/d0723d398338d86b48524e230fe24d93d62ee19a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix off by one issue for static statement sourcemaps (eg import) and for concise mode tags.
- Updated dependencies [[`d0723d3`](https://github.com/marko-js/marko/commit/d0723d398338d86b48524e230fe24d93d62ee19a)]:
- @marko/babel-utils@6.5.5
## 5.37.7
### Patch Changes
- [#2282](https://github.com/marko-js/marko/pull/2282) [`32e2eff`](https://github.com/marko-js/marko/commit/32e2eff5c3ecdcb36f7b6ed98ea2a1e705538a29) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve handling of sourcemaps for inline style blocks and tags.
- Updated dependencies [[`32e2eff`](https://github.com/marko-js/marko/commit/32e2eff5c3ecdcb36f7b6ed98ea2a1e705538a29)]:
- @marko/babel-utils@6.5.4
## 5.37.6
### Patch Changes
- [#2277](https://github.com/marko-js/marko/pull/2277) [`ce88d81`](https://github.com/marko-js/marko/commit/ce88d8194f98b4010032634f5427021810f6acdb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix "off by one" issue with source location information when the index was at the start of the line.
- Updated dependencies [[`ce88d81`](https://github.com/marko-js/marko/commit/ce88d8194f98b4010032634f5427021810f6acdb)]:
- @marko/babel-utils@6.5.3
## 5.37.5
### Patch Changes
- [#2274](https://github.com/marko-js/marko/pull/2274) [`5cea7d6`](https://github.com/marko-js/marko/commit/5cea7d65ead9b58d7d7d244078d279d561fd3ea7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Optimize javascript parsing helpers to pass in start line / column information to babel rather than faking it with whitespace.
For large templates this can have a significant impact on parsing performance.
- Updated dependencies [[`5cea7d6`](https://github.com/marko-js/marko/commit/5cea7d65ead9b58d7d7d244078d279d561fd3ea7)]:
- @marko/babel-utils@6.5.2
## 5.37.4
### Patch Changes
- [#2252](https://github.com/marko-js/marko/pull/2252) [`bfe85d1`](https://github.com/marko-js/marko/commit/bfe85d18772f244abfced05d7cde5698b7e077ec) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - When loading a taglib, always process exports field if inside node_modules folder.
- [#2252](https://github.com/marko-js/marko/pull/2252) [`339c28d`](https://github.com/marko-js/marko/commit/339c28dd590dc15b6a1011f38411809060f1a4ba) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow diagnostic fixes in parse stage.
- Updated dependencies [[`339c28d`](https://github.com/marko-js/marko/commit/339c28dd590dc15b6a1011f38411809060f1a4ba)]:
- @marko/babel-utils@6.5.1
## 5.37.3
### Patch Changes
- [#2248](https://github.com/marko-js/marko/pull/2248) [`0ced6e1`](https://github.com/marko-js/marko/commit/0ced6e17c24808586bd24f025d77cfb3c391ea2e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix typo in upgrade docs and adding missing `browser-refresh` module.
## 5.37.2
### Patch Changes
- [#2246](https://github.com/marko-js/marko/pull/2246) [`a699cd9`](https://github.com/marko-js/marko/commit/a699cd9434996b8da0a14acba39fd1db03c0329a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Misc backward compat improvements:
- Expose `marko/browser-refresh` as a noop
- Allow translators to specify "optional" taglibs to load if they're installed (used for automatically loading compat taglibs)
- `marko/node-require` legacy require hook now disables user babel transforms by default
- Allow `<macro>` tag instances to use tag arguments syntax
## 5.37.1
### Patch Changes
- [#2244](https://github.com/marko-js/marko/pull/2244) [`934dc13`](https://github.com/marko-js/marko/commit/934dc13972b14b6cc9511ae19db70f5b74a366b5) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Allow mixing comments with attr tags
## 5.37.0
### Minor Changes
- [#2238](https://github.com/marko-js/marko/pull/2238) [`a741f36`](https://github.com/marko-js/marko/commit/a741f36e60583a2403a912627765c3ec2aa824e5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add new optimizedRegistryIds compiler option
### Patch Changes
- Updated dependencies [[`a741f36`](https://github.com/marko-js/marko/commit/a741f36e60583a2403a912627765c3ec2aa824e5)]:
- @marko/babel-utils@6.5.0
## 5.36.2
### Patch Changes
- [#2232](https://github.com/marko-js/marko/pull/2232) [`a67e1c4`](https://github.com/marko-js/marko/commit/a67e1c42b04ede5d9b9ef3cb2f8e21bedd2f004f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where the `ignoreUnrecognizedTags` compiler option was incorrectly escaping attribute tags for recognized tags that did not explicitly define their attribute tags in a marko.json
## 5.36.1
### Patch Changes
- [#2217](https://github.com/marko-js/marko/pull/2217) [`4fc4614`](https://github.com/marko-js/marko/commit/4fc46149ae046dd0fac0e7cc7e904b188f616f7f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where element keys could be different because of hoisted const elements not always being keyed. This could cause a hydration issue since the server and client compilations would not agree on the keys.
## 5.36.0
### Minor Changes
- [#2214](https://github.com/marko-js/marko/pull/2214) [`2d0a566`](https://github.com/marko-js/marko/commit/2d0a566a569e0d8caab2fd9abc960e6810e29b56) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Using event handlers now causes a template to become an implicit component or split component (depending on if a string event handler is used).
## 5.35.14
### Patch Changes
- [#2212](https://github.com/marko-js/marko/pull/2212) [`a1a91a4`](https://github.com/marko-js/marko/commit/a1a91a474853a4b6dc31217d374ee0e7e1179cec) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issues related to hydrating sections under a native tag with the `no-update` directive.
## 5.35.13
### Patch Changes
- [#2210](https://github.com/marko-js/marko/pull/2210) [`7d1bbdb`](https://github.com/marko-js/marko/commit/7d1bbdb9af63164448697ceb20490ee0776bc70f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - I completely messed up the release of https://github.com/marko-js/marko/pull/2205, this fixes that.
## 5.35.12
### Patch Changes
- [`c8fe951`](https://github.com/marko-js/marko/commit/c8fe951813bf6c7d11e581faf9e43522ae76ae98) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Bump compiler and translator to pull in Marko runtime changes.
## 5.35.11
### Patch Changes
- [#2190](https://github.com/marko-js/marko/pull/2190) [`638ca07`](https://github.com/marko-js/marko/commit/638ca07db382345c26f90247115eef13394e9905) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update dependencies
- Updated dependencies [[`638ca07`](https://github.com/marko-js/marko/commit/638ca07db382345c26f90247115eef13394e9905)]:
- @marko/babel-utils@6.4.3
## 5.35.10
### Patch Changes
- [#2187](https://github.com/marko-js/marko/pull/2187) [`fe344b0`](https://github.com/marko-js/marko/commit/fe344b00041677f40ce49d03c0fb283322a1c898) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix some tags/class interop issues.
## 5.35.9
### Patch Changes
- [#2182](https://github.com/marko-js/marko/pull/2182) [`1fa3b05`](https://github.com/marko-js/marko/commit/1fa3b056006d5d0e3ac221b5b4a18b78de5add21) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support tracking the "input" using babels scope analysis.
## 5.35.8
### Patch Changes
- [#2180](https://github.com/marko-js/marko/pull/2180) [`a8bfb50`](https://github.com/marko-js/marko/commit/a8bfb50d7617d338c8e6b11c3f18cbb4829a5cba) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where vdom optimizer was including elements with user key attributes.
## 5.35.7
### Patch Changes
- [#2173](https://github.com/marko-js/marko/pull/2173) [`614f432`](https://github.com/marko-js/marko/commit/614f432bfeab93eb35c23d6e378e914b27540f7f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression where hydrate dependencies had the incorrect resolved path if they were in node_modules.
## 5.35.6
### Patch Changes
- [`409ef4e`](https://github.com/marko-js/marko/commit/409ef4e76d680b6e4202658fdf9567c663898d8b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression where hydrate entry files had incorrect relative paths.
## 5.35.5
### Patch Changes
- [#2164](https://github.com/marko-js/marko/pull/2164) [`08823b9`](https://github.com/marko-js/marko/commit/08823b916b0aca172edeaba86b632a4cf5462a8a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with interop translator not outputting correct hydrate entry code.
- Updated dependencies [[`08823b9`](https://github.com/marko-js/marko/commit/08823b916b0aca172edeaba86b632a4cf5462a8a)]:
- @marko/babel-utils@6.4.2
## 5.35.4
### Patch Changes
- [#2150](https://github.com/marko-js/marko/pull/2150) [`7ef2b89`](https://github.com/marko-js/marko/commit/7ef2b8956982455953f3c1180b2f9094ca489e52) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose all files from compiler exports.
## 5.35.3
### Patch Changes
- [#2148](https://github.com/marko-js/marko/pull/2148) [`b095755`](https://github.com/marko-js/marko/commit/b09575529493039ade02d9c35bcf21d5d4e6ef1d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with interop translator loading init-components tag.
## 5.35.2
### Patch Changes
- [#2140](https://github.com/marko-js/marko/pull/2140) [`4a1db86`](https://github.com/marko-js/marko/commit/4a1db8683d6c67fcff1bdbdaa76ab907c8b09170) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Some packages rely on a `@marko/compiler/package` entry point existing, adds back that export.
## 5.35.1
### Patch Changes
- [#2138](https://github.com/marko-js/marko/pull/2138) [`105c26b`](https://github.com/marko-js/marko/commit/105c26bd4f7f37bd6073e4795b01b83d31ecda06) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with package json src/dist override script.
- Updated dependencies [[`105c26b`](https://github.com/marko-js/marko/commit/105c26bd4f7f37bd6073e4795b01b83d31ecda06)]:
- @marko/babel-utils@6.4.1
## 5.35.0
### Minor Changes
- [#2004](https://github.com/marko-js/marko/pull/2004) [`2704819`](https://github.com/marko-js/marko/commit/27048199d6a0ee48ed8118e9f7017a94c7dc4f3d) Thanks [@mlrawlings](https://github.com/mlrawlings)! - Release alpha of tags api translator/runtime.
- [#2004](https://github.com/marko-js/marko/pull/2004) [`2704819`](https://github.com/marko-js/marko/commit/27048199d6a0ee48ed8118e9f7017a94c7dc4f3d) Thanks [@mlrawlings](https://github.com/mlrawlings)! - Add `mount` api for client rendered components and expose `Symbol.asyncIterator` for server rendered components.
### Patch Changes
- Updated dependencies [[`2704819`](https://github.com/marko-js/marko/commit/27048199d6a0ee48ed8118e9f7017a94c7dc4f3d), [`2704819`](https://github.com/marko-js/marko/commit/27048199d6a0ee48ed8118e9f7017a94c7dc4f3d)]:
- @marko/babel-utils@6.4.0
## 5.34.7
### Patch Changes
- [#2115](https://github.com/marko-js/marko/pull/2115) [`a55fb06`](https://github.com/marko-js/marko/commit/a55fb06ec638eb830eb72c71cb766fc05b6ea8cb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve nested attribute tag handling with scriptlets.
## 5.34.6
### Patch Changes
- [#2085](https://github.com/marko-js/marko/pull/2085) [`d82b21e`](https://github.com/marko-js/marko/commit/d82b21e8f505c5006d3781cf9056743dd9972fe1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve compile error output.
## 5.34.5
### Patch Changes
- [#2079](https://github.com/marko-js/marko/pull/2079) [`2976dfa`](https://github.com/marko-js/marko/commit/2976dfac56c592dfd80ea79c6ea0e1389346f44c) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where additional exports were being removed when stripping typescript types.
## 5.34.4
### Patch Changes
- [#2076](https://github.com/marko-js/marko/pull/2076) [`69b3ff5`](https://github.com/marko-js/marko/commit/69b3ff57c829418946e05c13b644a5560f589086) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade all package deps to latest
- Updated dependencies [[`69b3ff5`](https://github.com/marko-js/marko/commit/69b3ff57c829418946e05c13b644a5560f589086)]:
- @marko/babel-utils@6.3.5
## 5.34.3
### Patch Changes
- [#2074](https://github.com/marko-js/marko/pull/2074) [`bf23c566fac02f4e2991be357a95483663493b3f`](https://github.com/marko-js/marko/commit/bf23c566fac02f4e2991be357a95483663493b3f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade package lock and built types.
## 5.34.2
### Patch Changes
- [#2069](https://github.com/marko-js/marko/pull/2069) [`977d69078`](https://github.com/marko-js/marko/commit/977d690784f1d97acb3494bb822fa852c1380685) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with printing variable declarations with multiple variables.
## 5.34.1
### Patch Changes
- [#2064](https://github.com/marko-js/marko/pull/2064) [`5e294103f`](https://github.com/marko-js/marko/commit/5e294103f78642b8a44887a1569ffd0eabcf6821) Thanks [@LuLaValva](https://github.com/LuLaValva)! - fix sourcemaps
## 5.34.0
### Minor Changes
- [#2062](https://github.com/marko-js/marko/pull/2062) [`436ace040`](https://github.com/marko-js/marko/commit/436ace040b73d11908911d60c10845b6e99e8eca) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Add "exports" to marko.json
## 5.33.8
### Patch Changes
- [#2060](https://github.com/marko-js/marko/pull/2060) [`648a94928`](https://github.com/marko-js/marko/commit/648a94928f662b04634a61395d5d48a956a8ff36) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose meta data about which child Marko templates were analyzed for a given compilation.
- [#2059](https://github.com/marko-js/marko/pull/2059) [`aed88284b`](https://github.com/marko-js/marko/commit/aed88284b8b3c68965f70b6bdf9412c7100c5df5) Thanks [@LuLaValva](https://github.com/LuLaValva)! - fix AST types
- Updated dependencies [[`648a94928`](https://github.com/marko-js/marko/commit/648a94928f662b04634a61395d5d48a956a8ff36)]:
- @marko/babel-utils@6.3.4
## 5.33.7
### Patch Changes
- [#2056](https://github.com/marko-js/marko/pull/2056) [`84f443d60`](https://github.com/marko-js/marko/commit/84f443d60539cc1b3382c6b16da4061070f97aca) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue when the Marko hot-reload runtime is loaded in native esm
## 5.33.6
### Patch Changes
- [#2054](https://github.com/marko-js/marko/pull/2054) [`1c5eccadf`](https://github.com/marko-js/marko/commit/1c5eccadf8d968552dbe8756905009107d783718) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression with @marko/babel-utils not exposing new parse helpers.
- Updated dependencies [[`1c5eccadf`](https://github.com/marko-js/marko/commit/1c5eccadf8d968552dbe8756905009107d783718)]:
- @marko/babel-utils@6.3.3
## 5.33.5
### Patch Changes
- [#2051](https://github.com/marko-js/marko/pull/2051) [`5354d4411`](https://github.com/marko-js/marko/commit/5354d44112c56fcbbd7f44dd3bf91be1e5a7747c) Thanks [@LuLaValva](https://github.com/LuLaValva)! - add ts to ast
- Updated dependencies [[`5354d4411`](https://github.com/marko-js/marko/commit/5354d44112c56fcbbd7f44dd3bf91be1e5a7747c)]:
- @marko/babel-utils@6.3.2
## 5.33.4
### Patch Changes
- [#2049](https://github.com/marko-js/marko/pull/2049) [`1554b1e1e`](https://github.com/marko-js/marko/commit/1554b1e1e53a75980af0b238cc27bed5ddfa215a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow `template.marko` to act as `index.marko` for backword compat with v4/v3.
## 5.33.3
### Patch Changes
- [#2042](https://github.com/marko-js/marko/pull/2042) [`447104632`](https://github.com/marko-js/marko/commit/44710463258999ad037febef10264e32f3291157) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - When compiling async, prefer using the async babel api for loading babel config files.
## 5.33.2
### Patch Changes
- [#2038](https://github.com/marko-js/marko/pull/2038) [`71a227a5f`](https://github.com/marko-js/marko/commit/71a227a5ff8b16c0bb983e082f28280518f712ce) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where using the longhand nested attribute tag syntax in a marko.json with a `target-property` defined was not registering the alias as a known attribute, leading to compile errors.
## 5.33.1
### Patch Changes
- [#2020](https://github.com/marko-js/marko/pull/2020) [`6a4e947b5`](https://github.com/marko-js/marko/commit/6a4e947b5ac9944e61d7871d314a6325a0522d1d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure .marko files are resolved for legacy renderer taglib configs.
## 5.33.0
### Minor Changes
- [#2012](https://github.com/marko-js/marko/pull/2012) [`6ba268c84`](https://github.com/marko-js/marko/commit/6ba268c841631b3ed36964c8f532e543885ad4f5) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support registering a taglib in the compiler by just passing in a module id.
## 5.32.0
### Minor Changes
- [#2006](https://github.com/marko-js/marko/pull/2006) [`b2e70bc45`](https://github.com/marko-js/marko/commit/b2e70bc45006a8cccfa61ac99bbca40a71d05fd1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add compute node helper to replace babels `evaluate` helper. This helper is less aggressive and doesn't suffer from the false positives that popped up with babels version.
### Patch Changes
- Updated dependencies [[`b2e70bc45`](https://github.com/marko-js/marko/commit/b2e70bc45006a8cccfa61ac99bbca40a71d05fd1)]:
- @marko/babel-utils@6.3.0
## 5.31.2
### Patch Changes
- [#2001](https://github.com/marko-js/marko/pull/2001) [`037a6ce67`](https://github.com/marko-js/marko/commit/037a6ce67088d63dcdc67a8b5bd02c10cf38b64e) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve some typings for the compiler apis.
- Updated dependencies [[`037a6ce67`](https://github.com/marko-js/marko/commit/037a6ce67088d63dcdc67a8b5bd02c10cf38b64e)]:
- @marko/babel-utils@6.2.1
## 5.31.1
### Patch Changes
- [#1997](https://github.com/marko-js/marko/pull/1997) [`2afa3f6e6`](https://github.com/marko-js/marko/commit/2afa3f6e61ca262debde88bc11400a6ba97a2f19) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Ensure source maps are loaded in dev mode when using the @marko/register hook.
## 5.31.0
### Minor Changes
- [#1996](https://github.com/marko-js/marko/pull/1996) [`d93037843`](https://github.com/marko-js/marko/commit/d930378434279451b0113ae6a268304063b037f4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Move <macro> tag validation to the translate phase and expose new utilities for working with macros in @marko/babel-utils. This allows for migration/transformer/etc compiler hooks to better work with <macro>'s.
### Patch Changes
- Updated dependencies [[`d93037843`](https://github.com/marko-js/marko/commit/d930378434279451b0113ae6a268304063b037f4)]:
- @marko/babel-utils@6.2.0
## 5.30.3
### Patch Changes
- [#1992](https://github.com/marko-js/marko/pull/1992) [`1bc993012`](https://github.com/marko-js/marko/commit/1bc993012375315a6cbda3eed75291abf821de6b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix regression which would happen if tools tried to "delete" the `loc` property on error instances returned from Marko. This property is now configurable and can be deleted again.
## 5.30.2
### Patch Changes
- [#1990](https://github.com/marko-js/marko/pull/1990) [`a54a23794`](https://github.com/marko-js/marko/commit/a54a2379487fd20e6598d5fdfc7c7dbe0f644e8b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Change the stack frame for error messages generated by the compiler to work better with how node prints error messages.
## 5.30.1
### Patch Changes
- [#1987](https://github.com/marko-js/marko/pull/1987) [`8bf5cb1f0`](https://github.com/marko-js/marko/commit/8bf5cb1f097769c835a452ff4bbea67a6c741810) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - When duplicate taglib entries are found and merged, nullish values are now ignored. This means if you specify a property in a taglib it will not be unset by another (merged) taglib.
- [#1986](https://github.com/marko-js/marko/pull/1986) [`1b29b859f`](https://github.com/marko-js/marko/commit/1b29b859fb0876d9a8d0d7bba44d08f77f1706bb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where `module-code` entries were not properly checking the expected module output (causing them to always output esm). This was previously fine due to the cjs conversion plugin running for these, however a recent change caused that plugin to no longer run for these files since (which should have been unnecessary, except for that they had the incorrect check).
## 5.30.0
### Minor Changes
- [#1984](https://github.com/marko-js/marko/pull/1984) [`c6e2d0655`](https://github.com/marko-js/marko/commit/c6e2d06554166daa8eefe34121323413cf2d9cb1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow migrator as a tag entry file.
### Patch Changes
- Updated dependencies [[`c6e2d0655`](https://github.com/marko-js/marko/commit/c6e2d06554166daa8eefe34121323413cf2d9cb1)]:
- @marko/babel-utils@6.1.0
## 5.29.0
### Minor Changes
- [#1980](https://github.com/marko-js/marko/pull/1980) [`9d3b34eef`](https://github.com/marko-js/marko/commit/9d3b34eefa2d0d9f9b27b9635950360b62be2f1f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow parse errors to be recovered from by migrations. This adds a new ast node type of MarkoParseError.
MarkoParseError nodes can be removed during the migration stage to handle legacy syntaxes. Any MarkoParseError
left in the AST at the end of the migration phase will throw an error similar to what it would have previously
thrown synchronously.
This also means that all parse errors can be surfaced as an aggregate error instead of bailing on the first
parse error. When the compiler is ran with `errorRecovery: true` these errors become diagnostics instead of
being thrown.
### Patch Changes
- Updated dependencies [[`9d3b34eef`](https://github.com/marko-js/marko/commit/9d3b34eefa2d0d9f9b27b9635950360b62be2f1f)]:
- @marko/babel-utils@6.0.0
## 5.28.5
### Patch Changes
- [#1978](https://github.com/marko-js/marko/pull/1978) [`931a5d24b`](https://github.com/marko-js/marko/commit/931a5d24bbf77d7b29922f34d66d8ca7c42cea07) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoids loading babel config when compiler output is set to source or migrate.
## 5.28.4
### Patch Changes
- [#1976](https://github.com/marko-js/marko/pull/1976) [`7555a46a1`](https://github.com/marko-js/marko/commit/7555a46a19cee973b279fd582ffd51671490dc40) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where aggregate errors from the compiler were not exposing error objects (was exposing the raw diagnostics).
- [#1976](https://github.com/marko-js/marko/pull/1976) [`7555a46a1`](https://github.com/marko-js/marko/commit/7555a46a19cee973b279fd582ffd51671490dc40) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Include locations and original message for errors thrown from the compiler.
## 5.28.3
### Patch Changes
- [#1974](https://github.com/marko-js/marko/pull/1974) [`42f7b46e2`](https://github.com/marko-js/marko/commit/42f7b46e25168ef4998e9c3f6014f9b6e1234486) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Run migration fixes synchronously.
- Updated dependencies [[`42f7b46e2`](https://github.com/marko-js/marko/commit/42f7b46e25168ef4998e9c3f6014f9b6e1234486)]:
- @marko/babel-utils@5.22.1
## 5.28.2
### Patch Changes
- [#1972](https://github.com/marko-js/marko/pull/1972) [`897b8beba`](https://github.com/marko-js/marko/commit/897b8bebadbb08e0457fb959bd573cb2a5a4d593) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where error messages without a source location were losing their message
## 5.28.1
### Patch Changes
- [#1970](https://github.com/marko-js/marko/pull/1970) [`ce5c40c95`](https://github.com/marko-js/marko/commit/ce5c40c9570c3410f62a2c9feb635ee7c7e54799) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue when outputting hydrate code with commonjs modules enabled.
## 5.28.0
### Minor Changes
- [#1968](https://github.com/marko-js/marko/pull/1968) [`70922e68e`](https://github.com/marko-js/marko/commit/70922e68e07578a867fff846e9bb623d64298e14) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add support for additional diagnostics emitted from the compiler.
### Patch Changes
- Updated dependencies [[`70922e68e`](https://github.com/marko-js/marko/commit/70922e68e07578a867fff846e9bb623d64298e14)]:
- @marko/babel-utils@5.22.0
## 5.27.10
### Patch Changes
- [#1957](https://github.com/marko-js/marko/pull/1957) [`820fa12f4`](https://github.com/marko-js/marko/commit/820fa12f40f33abc1811f148441ff834cfe4654b) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix compiler config type definitions
## 5.27.9
### Patch Changes
- [#1955](https://github.com/marko-js/marko/pull/1955) [`ca9bfa2a2`](https://github.com/marko-js/marko/commit/ca9bfa2a2b16cecdbb269a8116b3186166b07061) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix type definition for MarkoTagBody AST.
## 5.27.8
### Patch Changes
- [#1949](https://github.com/marko-js/marko/pull/1949) [`7f6b65a4b`](https://github.com/marko-js/marko/commit/7f6b65a4b6d34dad6b4f6961be3b8766b7146e63) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Use @internal module to host browser/worker remapped files. Improves support for some tools that don't work well with nested package.json files.
## 5.27.7
### Patch Changes
- [#1934](https://github.com/marko-js/marko/pull/1934) [`04d6fad6d`](https://github.com/marko-js/marko/commit/04d6fad6d599adc98d6f0ef00a5c44b4a4fc7485) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where types were not being stripped from the inline Marko component class.
## 5.27.6
### Patch Changes
- [#1929](https://github.com/marko-js/marko/pull/1929) [`c7a197a5c`](https://github.com/marko-js/marko/commit/c7a197a5c2e49e4b365d185d6e24ab431a61abc9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Adds strict typescript types for the native HTML tags.
## 5.27.5
### Patch Changes
- [`712f68062`](https://github.com/marko-js/marko/commit/712f68062326b5fb71073b691d1761d4ac71bdc3) Thanks [@LuLaValva](https://github.com/LuLaValva)! - Add types for Marko translator-default
## 5.27.4
### Patch Changes
- [#1923](https://github.com/marko-js/marko/pull/1923) [`62afb3256`](https://github.com/marko-js/marko/commit/62afb3256a0c402e75b90f06af4e8cdc5c8112f3) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Remove class lifecycle types to avoid the need to `override` them.
## 5.27.3
### Patch Changes
- [#1921](https://github.com/marko-js/marko/pull/1921) [`1fe71a502`](https://github.com/marko-js/marko/commit/1fe71a5020c5930c63e9c7ff226a3befca0e58a4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid using `typeof window` and prefer `typeof document` checks for browser environment (improves future deno support).
- [#1921](https://github.com/marko-js/marko/pull/1921) [`f0c697d7b`](https://github.com/marko-js/marko/commit/f0c697d7b5b0afcbe524f390db2b3c5fa54d5607) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoids using a package.json remap for the browser implementation of the \_preserve internal tag (used to implement `no-update` directives). This fixes an issue where in vite the module could not be loaded properly.
## 5.27.2
### Patch Changes
- [#1920](https://github.com/marko-js/marko/pull/1920) [`7d5dab41c`](https://github.com/marko-js/marko/commit/7d5dab41c33cacbdff376570df09f65eb228a6a9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid adding `export {}` (from "@babel/plugin-transform-typescript") when outputing a template with the types stripped.
- [#1918](https://github.com/marko-js/marko/pull/1918) [`cceab7d20`](https://github.com/marko-js/marko/commit/cceab7d2061c627d5f3ea296f0acba80f97ad494) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Reduce script parsing restrictions added by Babel.
This was causing Babel to error when parsing partial scripts.
```marko
static const x = 1;
export { x };
```
Before this change in the above code Babel would error when parsing `export { x }` saying `x` was not previously defined. This is because Marko parses these statements in isolation.
- [#1920](https://github.com/marko-js/marko/pull/1920) [`7d5dab41c`](https://github.com/marko-js/marko/commit/7d5dab41c33cacbdff376570df09f65eb228a6a9) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid outputing a `declare`'d type on a `class`.
## 5.27.1
### Patch Changes
- [#1916](https://github.com/marko-js/marko/pull/1916) [`ac1d5062a`](https://github.com/marko-js/marko/commit/ac1d5062a7be8bb359ba8d378d3c7b2ec6dc14f6) Thanks [@mlrawlings](https://github.com/mlrawlings)! - fix: modify/remove some inefficient regexes
## 5.27.0
### Minor Changes
- [#1909](https://github.com/marko-js/marko/pull/1909) [`e8f1370cf`](https://github.com/marko-js/marko/commit/e8f1370cf668bb579e48fd05a60c086bed6bb466) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Allow repeated attribute tags without using a `marko.json` file. Attribute tag objects now also contain `Symbol.iterator` implementation to make the single case more easily forwarded to the `<for>` tag.
### Patch Changes
- [#1914](https://github.com/marko-js/marko/pull/1914) [`22228e804`](https://github.com/marko-js/marko/commit/22228e804c76d630c0fc333fa4750bb6e42c0814) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrades the included version of HTMLJS-Parser
## 5.26.0
### Minor Changes
- [#1907](https://github.com/marko-js/marko/pull/1907) [`7211a6937`](https://github.com/marko-js/marko/commit/7211a6937b2044a14f2c2194269a697c76066b54) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose `$global` as a shorthand for `out.global` within the template scope.
## 5.25.0
### Minor Changes
- [#1899](https://github.com/marko-js/marko/pull/1899) [`4fc38e800`](https://github.com/marko-js/marko/commit/4fc38e80010241da76d24a46c2cd838aa5cf309f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose the ability to intercept errors from the taglib builder.
## 5.24.0
### Minor Changes
- [#1897](https://github.com/marko-js/marko/pull/1897) [`72cdc3e5b`](https://github.com/marko-js/marko/commit/72cdc3e5b6c72a0b5d4b4738eb420571fa0cafa4) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Expose a top level `@marko/compiler/config` entry point for loading the default compiler config.
## 5.23.6
### Patch Changes
- [#1892](https://github.com/marko-js/marko/pull/1892) [`c55ae937c`](https://github.com/marko-js/marko/commit/c55ae937c4d756482d49a6b8797669cd39ca6288) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve types for the await tag and Marko.Template.
## 5.23.5
### Patch Changes
- [#1888](https://github.com/marko-js/marko/pull/1888) [`d110b0b5f`](https://github.com/marko-js/marko/commit/d110b0b5f6607a911d15b2045d46b9aa6ecba2d2) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve type definitions.
## 5.23.4
### Patch Changes
- [`23e36a04b`](https://github.com/marko-js/marko/commit/23e36a04b0c6f7d6b53307d7838f61a1e0f2ce29) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add missing type definition file to exposed types in package.json.
- [`d920e833d`](https://github.com/marko-js/marko/commit/d920e833df0b58456f28f7cb45ebd38b56c05ba7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add missing type definition for taglib.
- Updated dependencies [[`d920e833d`](https://github.com/marko-js/marko/commit/d920e833df0b58456f28f7cb45ebd38b56c05ba7)]:
- @marko/babel-utils@5.21.4
## 5.23.3
### Patch Changes
- [#1885](https://github.com/marko-js/marko/pull/1885) [`f1efd707a`](https://github.com/marko-js/marko/commit/f1efd707aa1c2aeac092ef7fff4ef5cb959f45b6) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Add taglib extensions and type definitions for typescript support.
## 5.23.2
### Patch Changes
- [#1880](https://github.com/marko-js/marko/pull/1880) [`c4cce33e8`](https://github.com/marko-js/marko/commit/c4cce33e8c917af7c45ffc64d748e88364a0b91a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix an issue where merging scripts (via the out.script api) was not properly inserting delimeters when scripts are added in different async writers.
## 5.23.1
### Patch Changes
- [#1875](https://github.com/marko-js/marko/pull/1875) [`b744720db`](https://github.com/marko-js/marko/commit/b744720db5483633643c5a75bd2eedc37aa9ff25) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrades "magic-string" module (used for css sourcemaps) to avoid deprecation warning.
## 5.23.0
### Minor Changes
- [#1865](https://github.com/marko-js/marko/pull/1865) [`797e90489`](https://github.com/marko-js/marko/commit/797e90489359e1e87a9756da5082c1e085555546) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Changes the "default" attributes name to be "value". This is technically a breaking change, but it primarily only impacts the tags-api-preview which will also be getting a release to support this change.
## 5.22.10
### Patch Changes
- [#1862](https://github.com/marko-js/marko/pull/1862) [`30e0ea43d`](https://github.com/marko-js/marko/commit/30e0ea43d56e0a3c59748eae32a0ab85921c1aeb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Avoid mutating component instance in HMR mode. (Improves support in tags api preview)
## 5.22.9
### Patch Changes
- [#1860](https://github.com/marko-js/marko/pull/1860) [`e64809458`](https://github.com/marko-js/marko/commit/e648094582c6a5c10d567bb7c844b50b6541e355) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Improve tag scanning performance.
* [#1860](https://github.com/marko-js/marko/pull/1860) [`e64809458`](https://github.com/marko-js/marko/commit/e648094582c6a5c10d567bb7c844b50b6541e355) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Update htmljs-parser version.
## 5.22.8
### Patch Changes
- [#1855](https://github.com/marko-js/marko/pull/1855) [`760824659`](https://github.com/marko-js/marko/commit/76082465962b99c6b6f364104c2f135901534c0a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix browser-refresh client support when using @marko/compiler/register
## 5.22.7
### Patch Changes
- [#1853](https://github.com/marko-js/marko/pull/1853) [`76771598e`](https://github.com/marko-js/marko/commit/76771598e83f143697c9a2bca3869f3c9fcf6ab1) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Enable the meta option for the compiler when @marko/compiler/register is used. This makes usage with lasso easier.
## 5.22.6
### Patch Changes
- [#1845](https://github.com/marko-js/marko/pull/1845) [`65bab8e6d`](https://github.com/marko-js/marko/commit/65bab8e6df02e6fd485a45d9a9c2200545f21479) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where Marko runtime was being incorrectly matched when swapping from dev to prod runtimes.
- Updated dependencies [[`65bab8e6d`](https://github.com/marko-js/marko/commit/65bab8e6df02e6fd485a45d9a9c2200545f21479)]:
- @marko/babel-utils@5.21.3
## 5.22.5
### Patch Changes
- [#1843](https://github.com/marko-js/marko/pull/1843) [`963f08ce9`](https://github.com/marko-js/marko/commit/963f08ce92e56f1d210068bedd5fc033b6db71c0) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade htmljs-parser.
## 5.22.4
### Patch Changes
- [#1841](https://github.com/marko-js/marko/pull/1841) [`26cd305ea`](https://github.com/marko-js/marko/commit/26cd305ea4391fb4846c07d5ba4984cc152584e7) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade htmljs-parser.
## 5.22.3
### Patch Changes
- [#1839](https://github.com/marko-js/marko/pull/1839) [`1df553e45`](https://github.com/marko-js/marko/commit/1df553e45829c7e0d754c5fec2c7d65e74c89457) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade HTMLJS-Parser.
## 5.22.2
### Patch Changes
- [#1837](https://github.com/marko-js/marko/pull/1837) [`63161abed`](https://github.com/marko-js/marko/commit/63161abed5fa071e88d06646bf0f55f0c6852b54) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with source map position for shorthand attribute methods.
## 5.22.1
### Patch Changes
- [#1830](https://github.com/marko-js/marko/pull/1830) [`efd6da235`](https://github.com/marko-js/marko/commit/efd6da23587567ddf035c06a9ab82472ca1683bb) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue with parsing type definitions for tag variables
## 5.22.0
### Minor Changes
- [#1826](https://github.com/marko-js/marko/pull/1826) [`e285cbbd1`](https://github.com/marko-js/marko/commit/e285cbbd1092afb1e669156777a3a9ccd46affb2) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Support removing typescript types.
## 5.21.7
### Patch Changes
- [#1824](https://github.com/marko-js/marko/pull/1824) [`2f6459d2c`](https://github.com/marko-js/marko/commit/2f6459d2c421ac82c4627c90f1c50cb229a99d33) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where shorthand attribute methods could not have a "return" statement.
## 5.21.6
### Patch Changes
- [#1814](https://github.com/marko-js/marko/pull/1814) [`b11f9d076`](https://github.com/marko-js/marko/commit/b11f9d076f40a0997c5c8534804ebc1b87d417cc) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade htmljs-parser.
## 5.21.5
### Patch Changes
- [#1811](https://github.com/marko-js/marko/pull/1811) [`49ef9801b`](https://github.com/marko-js/marko/commit/49ef9801b506ea6b7eafcb46e759a3463b0efd3d) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrade htmljs-parser to improve source location information.
## 5.21.4
### Patch Changes
- [#1806](https://github.com/marko-js/marko/pull/1806) [`04adc2d24`](https://github.com/marko-js/marko/commit/04adc2d24eb0111d6e4a8bd760d420199240cb2f) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix issue where attribute shorthand methods would have incorrect sourcemap position.
## 5.21.3
### Patch Changes
- [#1800](https://github.com/marko-js/marko/pull/1800) [`c352de67e`](https://github.com/marko-js/marko/commit/c352de67ecb19d45d9c6874a8ba048fb656bb562) Thanks [@mlrawlings](https://github.com/mlrawlings)! - fix: update deps, inline babel helper removed from latest version
## 5.21.2
### Patch Changes
- [#1797](https://github.com/marko-js/marko/pull/1797) [`5921c2297`](https://github.com/marko-js/marko/commit/5921c2297297698c4026f0a4d077c364c42e038a) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Pin a newer version of htmljs-parser that fixes some parser bugs. See: https://github.com/marko-js/htmljs-parser/pull/103
## 5.21.1
### Patch Changes
- [#1792](https://github.com/marko-js/marko/pull/1792) [`c9107ea7f`](https://github.com/marko-js/marko/commit/c9107ea7f6fc69df10700114fe35b7b494414194) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Fix broken previous release where the "main" field for package.json files was not correctly updated when published
- Updated dependencies [[`c9107ea7f`](https://github.com/marko-js/marko/commit/c9107ea7f6fc69df10700114fe35b7b494414194)]:
- @marko/babel-utils@5.21.1
## 5.21.0
### Minor Changes
- [#1787](https://github.com/marko-js/marko/pull/1787) [`dd9009d66`](https://github.com/marko-js/marko/commit/dd9009d665f4f660d106aa0c3364e34ca3561abc) Thanks [@DylanPiercey](https://github.com/DylanPiercey)! - Upgrades the compiler to use the latest major release of `htmljs-parser` bringing in the improvements listed here:
https://github.com/marko-js/htmljs-parser/pull/93
### Patch Changes
- Updated dependencies [[`dd9009d66`](https://github.com/marko-js/marko/commit/dd9009d665f4f660d106aa0c3364e34ca3561abc)]:
- @marko/babel-utils@5.21.0
## [5.20.9](https://github.com/marko-js/marko/compare/v5.20.8...v5.20.9) (2022-04-27)
**Note:** Version bump only for package @marko/compiler
## [5.20.8](https://github.com/marko-js/marko/compare/v5.20.7...v5.20.8) (2022-04-26)
### Bug Fixes
- type for BabelFile.markoConfig now reflects defaulted values ([cd49696](https://github.com/marko-js/marko/commit/cd496964c13af64b626a9cc10a3b55658e7418c8))
## [5.20.7](https://github.com/marko-js/marko/compare/v5.20.6...v5.20.7) (2022-04-26)
### Bug Fixes
- set cache entry before analysis to prevent infinite recursion ([d327864](https://github.com/marko-js/marko/commit/d3278640dbc403221c070f4529f18e9a05a60370))
## [5.20.6](https://github.com/marko-js/marko/compare/v5.20.5...v5.20.6) (2022-04-25)
**Note:** Version bump only for package @marko/compiler
## [5.20.5](https://github.com/marko-js/marko/compare/v5.20.4...v5.20.5) (2022-04-15)
### Bug Fixes
- **translator-default:** string literals in dynamic tags incorrectly doing component lookup ([28aa2e8](https://github.com/marko-js/marko/commit/28aa2e84c1f7335f77c2d0ef29d30453401e7b0d))
## [5.20.4](https://github.com/marko-js/marko/compare/v5.20.3...v5.20.4) (2022-04-11)
### Bug Fixes
- autoloading translators ([5eda8f3](https://github.com/marko-js/marko/commit/5eda8f388a9d0d253f4cda5c13bd5e716cbbc18d))
## [5.20.3](https://github.com/marko-js/marko/compare/v5.20.2...v5.20.3) (2022-03-24)
**Note:** Version bump only for package @marko/compiler
## [5.20.2](https://github.com/marko-js/marko/compare/v5.20.1...v5.20.2) (2022-03-23)
**Note:** Version bump only for package @marko/compiler
# [5.20.0](https://github.com/marko-js/marko/compare/v5.19.3...v5.20.0) (2022-03-11)
**Note:** Version bump only for package @marko/compiler
## [5.19.1](https://github.com/marko-js/marko/compare/v5.19.0...v5.19.1) (2022-01-28)
**Note:** Version bump only for package @marko/compiler
# [5.19.0](https://github.com/marko-js/marko/compare/v5.18.2...v5.19.0) (2022-01-28)
### Features
- support analyze field in marko.json ([#1769](https://github.com/marko-js/marko/issues/1769)) ([981f7f3](https://github.com/marko-js/marko/commit/981f7f39f932533178c538f8fc2788ea6f93d909))
## [5.18.2](https://github.com/marko-js/marko/compare/v5.18.1...v5.18.2) (2022-01-25)
**Note:** Version bump only for package @marko/compiler
## [5.18.1](https://github.com/marko-js/marko/compare/v5.18.0...v5.18.1) (2022-01-25)
**Note:** Version bump only for package @marko/compiler
# [5.18.0](https://github.com/marko-js/marko/compare/v5.17.10...v5.18.0) (2022-01-24)
**Note:** Version bump only for package @marko/compiler
## [5.17.10](https://github.com/marko-js/marko/compare/v5.17.9...v5.17.10) (2022-01-14)
### Bug Fixes
- issue with dynamic tag names not tracking references ([9d86540](https://github.com/marko-js/marko/commit/9d86540a37b0028370206d2367c0a2fc8a724575))
## [5.17.6](https://github.com/marko-js/marko/compare/v5.17.5...v5.17.6) (2022-01-02)
**Note:** Version bump only for package @marko/compiler
## [5.17.4](https://github.com/marko-js/marko/compare/v5.17.3...v5.17.4) (2021-11-17)
### Bug Fixes
- hoisted variable scopes clean up ([32f382b](https://github.com/marko-js/marko/commit/32f382bb0d054f2cb3709d571a0b95ac267f0523))
## [5.17.3](https://github.com/marko-js/marko/compare/v5.17.2...v5.17.3) (2021-10-30)
### Bug Fixes
- upgrade babel deps & fix builder regression ([91b3c58](https://github.com/marko-js/marko/commit/91b3c5855923adb64ab30677729e2d0404245846))
## [5.16.1](https://github.com/marko-js/marko/compare/v5.16.0...v5.16.1) (2021
Showing preview only (757K chars total). Download the full file or copy to clipboard to get everything.
gitextract_k0_h5jq0/ ├── .browserslistrc ├── .c8rc.json ├── .changeset/ │ ├── README.md │ └── config.json ├── .gitattributes ├── .github/ │ ├── CODE_OF_CONDUCT.md │ ├── CONTRIBUTING.md │ ├── ISSUE_TEMPLATE/ │ │ ├── Bug_report.md │ │ ├── Feature_request.md │ │ └── Support_question.md │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ └── ci.yml ├── .gitignore ├── .husky/ │ ├── .gitignore │ └── pre-commit ├── .lintstagedrc.json ├── .mocharc.json ├── .prettierignore ├── .prettierrc.json ├── .sizes/ │ ├── comments.csr/ │ │ └── entry.js │ ├── comments.ssr/ │ │ └── entry.js │ ├── counter.csr/ │ │ └── entry.js │ ├── counter.ssr/ │ │ └── entry.js │ ├── dom.js │ └── name-cache.json ├── .sizes.json ├── LICENSE ├── SECURITY.md ├── babel.config.js ├── cspell.json ├── eslint.config.mjs ├── package.json ├── packages/ │ ├── compiler/ │ │ ├── CHANGELOG.md │ │ ├── babel-types.d.ts │ │ ├── babel-utils.d.ts │ │ ├── babel-utils.js │ │ ├── config.d.ts │ │ ├── config.js │ │ ├── index.d.ts │ │ ├── internal/ │ │ │ └── babel/ │ │ │ ├── index.ts │ │ │ ├── modules.d.ts │ │ │ └── package.json │ │ ├── modules.d.ts │ │ ├── modules.js │ │ ├── package.json │ │ ├── register.d.ts │ │ ├── register.js │ │ ├── scripts/ │ │ │ ├── bundle-babel.mts │ │ │ ├── types/ │ │ │ │ ├── babel-traverse.js │ │ │ │ └── babel-types.js │ │ │ └── types.js │ │ └── src/ │ │ ├── babel-plugin/ │ │ │ ├── file.js │ │ │ ├── index.js │ │ │ ├── parser.js │ │ │ ├── plugins/ │ │ │ │ ├── migrate.js │ │ │ │ └── transform.js │ │ │ └── util/ │ │ │ └── plugin-hooks.js │ │ ├── babel-utils/ │ │ │ ├── assert.js │ │ │ ├── compute.js │ │ │ ├── diagnostics.js │ │ │ ├── get-file.js │ │ │ ├── imports.js │ │ │ ├── index.js │ │ │ ├── loc.js │ │ │ ├── parse.js │ │ │ ├── taglib.js │ │ │ ├── tags.js │ │ │ └── template-string.js │ │ ├── config.js │ │ ├── index.js │ │ ├── register.js │ │ ├── taglib/ │ │ │ ├── config.js │ │ │ ├── finder/ │ │ │ │ └── index.js │ │ │ ├── index.js │ │ │ ├── loader/ │ │ │ │ ├── Attribute.js │ │ │ │ ├── DependencyChain.js │ │ │ │ ├── Property.js │ │ │ │ ├── Tag.js │ │ │ │ ├── Taglib.js │ │ │ │ ├── Transformer.js │ │ │ │ ├── cache.js │ │ │ │ ├── index.js │ │ │ │ ├── json-file-reader.js │ │ │ │ ├── loadAttributeFromProps.js │ │ │ │ ├── loadAttributes.js │ │ │ │ ├── loadTagFromFile.js │ │ │ │ ├── loadTagFromProps.js │ │ │ │ ├── loadTaglibFromDir.js │ │ │ │ ├── loadTaglibFromFile.js │ │ │ │ ├── loadTaglibFromProps.js │ │ │ │ ├── loaders.js │ │ │ │ ├── property-handlers.js │ │ │ │ ├── scanTagsDir.js │ │ │ │ └── types.js │ │ │ ├── lookup/ │ │ │ │ └── index.js │ │ │ ├── marko-html.json │ │ │ ├── marko-math.json │ │ │ └── marko-svg.json │ │ └── util/ │ │ ├── build-code-frame.js │ │ ├── merge-errors.js │ │ ├── quick-hash.js │ │ ├── should-optimize.js │ │ ├── strip-ansi.js │ │ └── try-load-translator.js │ ├── runtime-class/ │ │ ├── CHANGELOG.md │ │ ├── README.md │ │ ├── bin/ │ │ │ ├── markoc │ │ │ └── markoc.js │ │ ├── browser-refresh.js │ │ ├── compiler-browser.marko │ │ ├── compiler.js │ │ ├── components-browser.marko │ │ ├── components.js │ │ ├── docs/ │ │ │ ├── 10-awesome-marko-features.md │ │ │ ├── body-content.md │ │ │ ├── class-components.md │ │ │ ├── cloudflare-workers.md │ │ │ ├── compiler.md │ │ │ ├── component-diagram.afdesign │ │ │ ├── concise.md │ │ │ ├── conditionals-and-lists.md │ │ │ ├── core-tags.md │ │ │ ├── custom-tags.md │ │ │ ├── editor-plugins.md │ │ │ ├── events.md │ │ │ ├── express.md │ │ │ ├── fastify.md │ │ │ ├── getting-started.md │ │ │ ├── http.md │ │ │ ├── installing.md │ │ │ ├── koa.md │ │ │ ├── lasso.md │ │ │ ├── marko-5-upgrade.md │ │ │ ├── marko-json.md │ │ │ ├── marko-vs-react.md │ │ │ ├── redux.md │ │ │ ├── rendering.md │ │ │ ├── rollup.md │ │ │ ├── state.md │ │ │ ├── structure.json │ │ │ ├── styles.md │ │ │ ├── syntax.md │ │ │ ├── troubleshooting-streaming.md │ │ │ ├── typescript.md │ │ │ ├── vite.md │ │ │ ├── webpack.md │ │ │ └── why-is-marko-fast.md │ │ ├── env.js │ │ ├── helpers/ │ │ │ ├── README.md │ │ │ ├── empty.js │ │ │ └── notEmpty.js │ │ ├── index-browser.marko │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── legacy-components-browser.marko │ │ ├── legacy-components.js │ │ ├── node-require.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── build.json │ │ │ ├── compiler/ │ │ │ │ ├── config.js │ │ │ │ ├── index.js │ │ │ │ └── modules.js │ │ │ ├── core-tags/ │ │ │ │ ├── .eslintrc │ │ │ │ ├── components/ │ │ │ │ │ ├── init-components-tag.js │ │ │ │ │ ├── preferred-script-location-tag.js │ │ │ │ │ └── preserve-tag.js │ │ │ │ └── core/ │ │ │ │ ├── __flush_here_and_after__.js │ │ │ │ ├── await/ │ │ │ │ │ ├── AsyncValue.js │ │ │ │ │ ├── client-reorder-runtime.js │ │ │ │ │ ├── index.d.marko │ │ │ │ │ ├── renderer.js │ │ │ │ │ └── reorderer-renderer.js │ │ │ │ └── script.d.marko │ │ │ ├── index.js │ │ │ ├── node-require/ │ │ │ │ ├── browser-refresh.js │ │ │ │ ├── hot-reload.js │ │ │ │ └── index.js │ │ │ ├── node_modules/ │ │ │ │ └── @internal/ │ │ │ │ ├── components-beginComponent/ │ │ │ │ │ ├── index-browser.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── components-define-widget-legacy/ │ │ │ │ │ ├── index-browser.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── components-endComponent/ │ │ │ │ │ ├── index-browser.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── components-entry/ │ │ │ │ │ ├── index-browser.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── components-entry-legacy/ │ │ │ │ │ ├── index-browser.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── components-registry/ │ │ │ │ │ ├── index-browser.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── components-util/ │ │ │ │ │ ├── index-browser.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── create-readable/ │ │ │ │ │ ├── index-browser.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── loader/ │ │ │ │ │ ├── fallback-node.js │ │ │ │ │ ├── index-browser.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── preserve-tag/ │ │ │ │ │ ├── index-browser.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ ├── require/ │ │ │ │ │ ├── index-browser.js │ │ │ │ │ ├── index-legacy-browser.js │ │ │ │ │ ├── index-webpack.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── package.json │ │ │ │ └── set-immediate/ │ │ │ │ ├── index-browser.js │ │ │ │ ├── index-worker.js │ │ │ │ ├── index.js │ │ │ │ ├── package.json │ │ │ │ └── queueMicrotask.js │ │ │ ├── runtime/ │ │ │ │ ├── .eslintrc │ │ │ │ ├── RenderResult.js │ │ │ │ ├── components/ │ │ │ │ │ ├── Component.js │ │ │ │ │ ├── ComponentDef.js │ │ │ │ │ ├── ComponentsContext.js │ │ │ │ │ ├── GlobalComponentsContext.js │ │ │ │ │ ├── KeySequence.js │ │ │ │ │ ├── ServerComponent.js │ │ │ │ │ ├── State.js │ │ │ │ │ ├── attach-detach.js │ │ │ │ │ ├── defineComponent.js │ │ │ │ │ ├── dom-data.js │ │ │ │ │ ├── event-delegation.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── legacy/ │ │ │ │ │ │ ├── browser.json │ │ │ │ │ │ ├── defineComponent-legacy.js │ │ │ │ │ │ ├── defineRenderer-legacy.js │ │ │ │ │ │ ├── defineWidget-legacy.js │ │ │ │ │ │ ├── dependencies/ │ │ │ │ │ │ │ ├── html.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ └── vdom.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── jquery.js │ │ │ │ │ │ ├── ready.js │ │ │ │ │ │ └── renderer-legacy.js │ │ │ │ │ ├── registry.js │ │ │ │ │ ├── renderer.js │ │ │ │ │ └── update-manager.js │ │ │ │ ├── createOut.js │ │ │ │ ├── dom-insert.js │ │ │ │ ├── events.js │ │ │ │ ├── helpers/ │ │ │ │ │ ├── _change-case.js │ │ │ │ │ ├── assign.js │ │ │ │ │ ├── attr-tag.js │ │ │ │ │ ├── class-value.js │ │ │ │ │ ├── dynamic-tag.js │ │ │ │ │ ├── empty-component.js │ │ │ │ │ ├── merge.js │ │ │ │ │ ├── of-fallback.js │ │ │ │ │ ├── render-tag.js │ │ │ │ │ ├── serialize-noop.js │ │ │ │ │ ├── skip-serialize.js │ │ │ │ │ ├── style-value.js │ │ │ │ │ ├── tags-compat/ │ │ │ │ │ │ ├── dom-debug.js │ │ │ │ │ │ ├── dom-debug.mjs │ │ │ │ │ │ ├── dom.js │ │ │ │ │ │ ├── dom.mjs │ │ │ │ │ │ ├── html-debug.js │ │ │ │ │ │ ├── html-debug.mjs │ │ │ │ │ │ ├── html.js │ │ │ │ │ │ ├── html.mjs │ │ │ │ │ │ ├── runtime-dom.js │ │ │ │ │ │ └── runtime-html.js │ │ │ │ │ └── to-string.js │ │ │ │ ├── html/ │ │ │ │ │ ├── AsyncStream.js │ │ │ │ │ ├── BufferedWriter.js │ │ │ │ │ ├── StringWriter.js │ │ │ │ │ ├── get-render-id.js │ │ │ │ │ ├── helpers/ │ │ │ │ │ │ ├── _dynamic-attr.js │ │ │ │ │ │ ├── attr.js │ │ │ │ │ │ ├── attrs.js │ │ │ │ │ │ ├── class-attr.js │ │ │ │ │ │ ├── data-marko.js │ │ │ │ │ │ ├── escape-script-placeholder.js │ │ │ │ │ │ ├── escape-style-placeholder.js │ │ │ │ │ │ ├── escape-xml.js │ │ │ │ │ │ ├── merge-attrs.js │ │ │ │ │ │ ├── props-script.js │ │ │ │ │ │ └── style-attr.js │ │ │ │ │ ├── hot-reload.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── marko-namespace.js │ │ │ │ ├── renderable.js │ │ │ │ └── vdom/ │ │ │ │ ├── AsyncVDOMBuilder.js │ │ │ │ ├── VComment.js │ │ │ │ ├── VComponent.js │ │ │ │ ├── VDocumentFragment.js │ │ │ │ ├── VElement.js │ │ │ │ ├── VFragment.js │ │ │ │ ├── VNode.js │ │ │ │ ├── VText.js │ │ │ │ ├── helpers/ │ │ │ │ │ ├── attrs.js │ │ │ │ │ ├── const-element.js │ │ │ │ │ └── merge-attrs.js │ │ │ │ ├── hot-reload.js │ │ │ │ ├── index.js │ │ │ │ ├── is-text-only.js │ │ │ │ ├── marko-namespace.js │ │ │ │ ├── morphdom/ │ │ │ │ │ ├── fragment.js │ │ │ │ │ ├── helpers.js │ │ │ │ │ └── index.js │ │ │ │ ├── parse-html.js │ │ │ │ └── vdom.js │ │ │ ├── taglib/ │ │ │ │ └── index.js │ │ │ ├── translator/ │ │ │ │ ├── cdata/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index[html].js │ │ │ │ │ └── index[vdom].js │ │ │ │ ├── class.js │ │ │ │ ├── comment/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index[html].js │ │ │ │ │ └── index[vdom].js │ │ │ │ ├── declaration/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index[html].js │ │ │ │ │ └── index[vdom].js │ │ │ │ ├── document-type/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index[html].js │ │ │ │ │ └── index[vdom].js │ │ │ │ ├── index.js │ │ │ │ ├── placeholder/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index[html].js │ │ │ │ │ └── index[vdom].js │ │ │ │ ├── scriptlet.js │ │ │ │ ├── tag/ │ │ │ │ │ ├── attribute/ │ │ │ │ │ │ ├── directives/ │ │ │ │ │ │ │ ├── class.js │ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ │ ├── no-update-body-if.js │ │ │ │ │ │ │ ├── no-update-body.js │ │ │ │ │ │ │ ├── no-update-if.js │ │ │ │ │ │ │ ├── no-update.js │ │ │ │ │ │ │ └── style.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── modifiers/ │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── no-update.js │ │ │ │ │ │ └── scoped.js │ │ │ │ │ ├── attribute-tag.js │ │ │ │ │ ├── custom-tag.js │ │ │ │ │ ├── dynamic-tag.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── macro-tag.js │ │ │ │ │ ├── native-tag.js │ │ │ │ │ ├── native-tag[html]/ │ │ │ │ │ │ ├── attributes.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── native-tag[vdom]/ │ │ │ │ │ │ ├── attributes.js │ │ │ │ │ │ └── index.js │ │ │ │ │ └── util.js │ │ │ │ ├── taglib/ │ │ │ │ │ ├── core/ │ │ │ │ │ │ ├── conditional/ │ │ │ │ │ │ │ ├── translate-else-if.js │ │ │ │ │ │ │ ├── translate-else.js │ │ │ │ │ │ │ ├── translate-if.js │ │ │ │ │ │ │ └── util.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── macro/ │ │ │ │ │ │ │ ├── parse.js │ │ │ │ │ │ │ └── translate.js │ │ │ │ │ │ ├── migrate.js │ │ │ │ │ │ ├── parse-class.js │ │ │ │ │ │ ├── parse-client.js │ │ │ │ │ │ ├── parse-export.js │ │ │ │ │ │ ├── parse-import.js │ │ │ │ │ │ ├── parse-module-code.js │ │ │ │ │ │ ├── parse-server.js │ │ │ │ │ │ ├── parse-static.js │ │ │ │ │ │ ├── transform-body.js │ │ │ │ │ │ ├── transform-style.js │ │ │ │ │ │ ├── translate-await.js │ │ │ │ │ │ ├── translate-for.js │ │ │ │ │ │ ├── translate-html-comment.js │ │ │ │ │ │ ├── translate-include-content.js │ │ │ │ │ │ ├── translate-server-only.js │ │ │ │ │ │ └── translate-while.js │ │ │ │ │ └── index.js │ │ │ │ ├── text/ │ │ │ │ │ ├── index.js │ │ │ │ │ ├── index[html].js │ │ │ │ │ └── index[vdom].js │ │ │ │ └── util/ │ │ │ │ ├── add-dependencies.js │ │ │ │ ├── escape-regexp.js │ │ │ │ ├── get-component-files.js │ │ │ │ ├── html-out-write.js │ │ │ │ ├── key-manager.js │ │ │ │ ├── optimize-html-writes.js │ │ │ │ ├── optimize-vdom-create.js │ │ │ │ ├── plugin-hooks.js │ │ │ │ ├── runtime-flags.js │ │ │ │ ├── vdom-out-write.js │ │ │ │ └── with-previous-location.js │ │ │ └── translator.js │ │ ├── tags-html.d.ts │ │ ├── test/ │ │ │ ├── .gitignore │ │ │ ├── __util__/ │ │ │ │ ├── BrowserHelpers.js │ │ │ │ ├── async-helpers.js │ │ │ │ ├── async-test-suite.js │ │ │ │ ├── components-from-meta.js │ │ │ │ ├── create-marko-jsdom-module.js │ │ │ │ ├── domToHTML.js │ │ │ │ ├── domToString.js │ │ │ │ ├── package.json │ │ │ │ ├── patch-module.js │ │ │ │ ├── pubsub.js │ │ │ │ ├── test-init-browser.js │ │ │ │ ├── test-init.js │ │ │ │ └── toHTML.js │ │ │ ├── api/ │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── error-renderSync/ │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── error-renderSync-beginAsync/ │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── load-render-callback/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── load-render-promise/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── load-source/ │ │ │ │ │ │ ├── custom-options-expected.html │ │ │ │ │ │ ├── empty-options-expected.html │ │ │ │ │ │ ├── invalid-template.marko │ │ │ │ │ │ ├── no-options-expected.html │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── no-write-to-disk-load/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── no-write-to-disk-require/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── render-await-client-reorder-unhandled-rejected-promise/ │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── render-await-promise-toString/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── render-callback-args/ │ │ │ │ │ │ ├── expected.2.html │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── render-callback-global-data/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── render-readable-stream-global-data/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── render-to-out-error/ │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── render-writable-stream-global-data/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── renderSync/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── renderSync-global-data/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── renderSync-no-data/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── renderToString/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── renderToString-callback-async/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-async/ │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── renderToString-callback-sync/ │ │ │ │ │ │ ├── expected.2.html │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── renderToString-no-callback-async/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-async/ │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── require-compiled-template/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── require-hook-compiler-options/ │ │ │ │ │ │ ├── invalid.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── require-render-callback/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ └── require-render-to-stream/ │ │ │ │ │ ├── expected.html │ │ │ │ │ ├── template.marko │ │ │ │ │ └── test.js │ │ │ │ └── index.test.js │ │ │ ├── api-compiler/ │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── compileFileForBrowser-callback.js/ │ │ │ │ │ │ ├── expected.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── compileFileForBrowser.js/ │ │ │ │ │ │ ├── expected.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── compileForBrowser-callback.js/ │ │ │ │ │ │ ├── expected.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── compileForBrowser-write-version-comment.js/ │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── compileForBrowser.js/ │ │ │ │ │ │ ├── expected.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── configure/ │ │ │ │ │ │ └── test.js │ │ │ │ │ └── configure-singleton/ │ │ │ │ │ └── test.js │ │ │ │ └── index.test.js │ │ │ ├── async-stream/ │ │ │ │ ├── fixtures/ │ │ │ │ │ └── hello.txt │ │ │ │ └── index.test.js │ │ │ ├── async-vdom-builder/ │ │ │ │ └── index.test.js │ │ │ ├── components-browser/ │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── adjacent-nested-fragments/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── text-display/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── append-prepend/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-api/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-api-move-root/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-conditional-events/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── custom-button.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-destroy-ref/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-legacy-button/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-destroy-unsubscribe-custom-events/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-custom-events/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-destroy-unsubscribe-dom-events/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-dom-event-listeners-repeated-non-bubbling/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-dom-events/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-legacy-button/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-dynamic-tag-name/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-event-handler-method-conditional-bubbles/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-event-handler-method-conditional-direct/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-event-handler-method-dynamic/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-extends-EventEmitter/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-file-exports-class/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-getComponent/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-getComponents-multiple/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-getComponents-single/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-getEl/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-getEls/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-include-ref/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-bar/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-include-ref-dynamic/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-bar/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-no-update-attrs/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-no-update-attrs-dynamic/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-preserve-all-state-when-rendered-in-loop/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-preserve-all-state-when-rerendered/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-preserve-all-state-when-rerendered-setTimeout/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-preserve-dom-attrs/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-preserve-dom-attrs-dynamic/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-preserve-dom-if/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-stateful-rerender/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-preserve-dom-repeated/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-preserve-dom-root/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-preserve-multiple-split/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-split/ │ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-render-to-iframe/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-iframe-content/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-iframe-more-content/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-renderToString/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-renderToString-callback-sync/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── hello/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── test-async/ │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-renderToString-text-node/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── my-text-node.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-replaceState/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-rerender-init-order/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-rerender-init-order-child/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-rerender-reuse-stateful/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-rerender-stateless-new-props/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-setStateDirty/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-stateful-copy-state-on-write/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-stateful-no-copy-state-on-write-if-same-value/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-stateful-no-rerender-if-destroyed/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-stateful-preserve-body/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-stateful-button/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ │ └── marko-tag.json │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-stateful-update/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-stateful-update-handler/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-stateful-button/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ │ └── marko-tag.json │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-stateful-update-handler-no-match/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-stateful-button/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ │ └── marko-tag.json │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-stateful-update-on-mount/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-stopPropagation/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-subscribeTo-destroy-subscriber/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-subscribeTo-destroy-target/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-toggle-spread-attributes/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-transclusion/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-transclusion-alert/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ │ └── marko-tag.json │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-unescaped-html/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-unique-id/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-update-batch-not-empty/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── counter.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-var/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── custom-events/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-bar/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-custom-events/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── custom-events-declarative/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-bar/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-custom-events/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── custom-events-declarative-function/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-bar/ │ │ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ │ └── app-custom-events/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── custom-events-declarative-multiple/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-bar/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── custom-events-declarative-multiple-once/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-bar/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── custom-events-declaritive-once/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-bar/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── custom-events-repeated-component/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── item/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── lookup.js │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── custom-events-repeated-component-once/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── item/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── lookup.js │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── destroy-cleanup/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── destroy-component/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-simple/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── destroy-detach/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── destroy-legacy/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-bar/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-custom-events/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── destroy-multiple-root-els/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-boundary-inner-component-only/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── inner/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-component-mismatch/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-component-mismatch-append/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-component-toplevel-surrounded/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-destroy-child/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-dynamic-attributes/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-dynamic-nested-roots/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── hello/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── message/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── welcome/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-existing-key-component-to-element/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-existing-key-component-to-fragment/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-insert-el-before-component/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-insert-unkeyed-el-before-component/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-insert-unkeyed-el-before-preserved-component/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-mismatch-remove-fragment/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-rearrange-keyed-components/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-rearrange-keyed-els/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-remove-all-els/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-remove-end-el/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-remove-start-el/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-simple/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-swap-components-dynamic/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── hello/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── world/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-swap-components-keyed/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── hello/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── world/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-swap-components-keyed-dynamic/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── hello/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── world/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-swap-keyed-el/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── diffpatch-swap-unkeyed-el/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── dom-custom-event/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── dom-event-handlers-alternate/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── dom-events-repeated-el-bubbling/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── dom-events-repeated-el-bubbling-one-arg/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── dom-events-repeated-el-bubbling-two-args/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── dom-events-repeated-el-non-bubbling/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── dom-events-repeated-el-non-bubbling-multiple/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── dynamic-tag-custom-event-handler/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── dynamic-tag-default-namespace/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── dynamic-tag-html-event-handler/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── dynamic-tag-no-update-html-attributes/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── dynamic-tag-preserve-old/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── dynamic-tag-root/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── modal.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── dynamic-tag-shorthand/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── dynamic-tag-switch-components/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── goodbye.marko │ │ │ │ │ │ │ └── hello.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── dynamic-tag-user-key/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── emit-event-during-mount/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── custom-tag/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-attach-el/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-attach-el-function/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-attach-el-once/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-attach-if-else-nested-component/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── color-include/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-detach-component-destroy/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-detach-el/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-detach-el-once/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-detach-el-preventDefault/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-detach-remove-nested-component-last/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── color-li/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-detach-remove-nested-component-middle/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── color-li/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-handler-bubbling-once/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-handler-bubbling-once-split/ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-handler-custom-args/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-fancy-button/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-handler-dom-args-bubbling/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-handler-dom-args-bubbling-function/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-handler-dom-args-bubbling-multiple-top-level-elements/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-handler-dom-args-bubbling-once/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-handler-dom-args-non-bubbling/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-handler-dom-args-non-bubbling-once/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-handler-function/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-handler-non-bubbling-multiple-listeners/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-handler-non-bubbling-once/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-handler-non-bubbling-rerender-el-mismatch/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── event-handler-non-bubbling-root-el/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── extend-component/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-button/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ │ │ └── marko-tag.json │ │ │ │ │ │ │ └── app-checkbox/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ │ └── marko-tag.json │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── for-first-el-key-cache-value/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── forceUpdate/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── form-controls-default-value/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── get-component-for-el-nested-fragments/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── child/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── get-component-for-el-split-component/ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── child/ │ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── get-el-nested-fragments/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── child/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── nested-child/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── global-rerender/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── global-rerender-nested/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── implicit-component/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── implicit-component-keys/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── include-event-handler/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── include-preserve-old/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── include-root/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ ├── modal.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── input-checkbox/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── input-global/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── input-no-change/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── input-no-change-nested/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ │ └── test.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── input-no-value/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── input-persisted/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── input-persisted-nested-component/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-counter/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── input-value-zero/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── insert-before-after/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── key-transcluded-content/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── some-nested-component/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── keyed-matching-transcluded/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── card/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── label-for/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── label-for-scoped-repeated/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── lifecyle-hooks-constructor/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── lifecyle-hooks-destroy/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── hooks.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── lifecyle-hooks-nested-no-id/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── hooks.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── lifecyle-hooks-nested-with-id/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── hooks.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── lifecyle-hooks-parent-child-ordering/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── hooks.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── lifecyle-hooks-render-arg/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── lifecyle-hooks-root/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── morphdom-node-added-nested-keyed/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── multiple-roots-rerender-root-child/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── nested-fragment-namespace/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── nested-fragments/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── container.marko │ │ │ │ │ │ │ └── fragment.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── onCreate/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── onInput/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── onInput-instance-data/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── onInput-return/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── prefer-closest-tag/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── child/ │ │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ │ ├── child/ │ │ │ │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ │ │ │ └── test.marko │ │ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ │ │ └── test.marko │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── test.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── preserve-component-transcluded-autokey/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── container.marko │ │ │ │ │ │ │ └── counter.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── preserve-component-transcluded-userkey/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── container.marko │ │ │ │ │ │ │ └── counter.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── preserve-dom/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── preserve-dom-body/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── preserve-dom-body-no-id/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── preserve-dom-body-shared-key/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── child-preserved.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── preserve-dom-conditional-before/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── preserve-dom-loop/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── preserve-dom-no-id/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── preserve-dom-server-mismatch/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── child.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── preserve-dom-transcluded-autokey/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── container.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── preserve-dom-transcluded-userkey/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── container.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── preserve-nested/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── preserve-nodes-update-scoped-elements/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── prevent-input-mutation-repeated-at-tags/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── menu/ │ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ │ └── marko-tag.json │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── redefine-component-var/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── ref-nested-component-multiple-root-els/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── multiple-root-els/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── ref-nested-component-multiple-root-els-with-refs/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── multiple-root-els/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── remove-last-multi-root-component/ │ │ │ │ │ │ ├── child.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── replace/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── replace-async/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── replaceChildrenOf/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-counter/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── rerender-destroy-incompatible/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── bar/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── rerender-multiple-roots/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── rerender-same-root/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── rerender-style-root/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── sanity-check-custom-event/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── sanity-check-implicit-bind-component/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── sanity-check-inline/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── sanity-check-key/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── sanity-check-multiple-root-els/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── sanity-check-single-file-component/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── sanity-check-template-entry/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── sanity-check-template-entry-split/ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── scoped-link/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── server-client-mismatch/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-bar/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── set-null-state/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── simple-attrs-optimize-toggle/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── split-browser/ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── split-browser-export-class/ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── split-browser-inline/ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── state-freeze/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── state-null-undefined/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── state-var/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── state-watch-null/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── state-watch-null-async/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── state-watch-undefined/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── style-attr/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── tag-empty/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── tag-params/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── name/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── tag-params-nested-tags/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── name/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── textarea/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── textarea-value-attribute/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── top-level-transcluded-content/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── inner.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── transcluded-component-from-non-rerender-root/ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-button/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── counter/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── transclusion-body-slot-attr/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-button/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── transclusion-body-slot-default-to-renderBody/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-button/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── transclusion-body-slot-tag/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-button/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── transclusion-include-not-in-state/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-button/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── transclusion-include-split/ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-button/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── transclusion-non-bubbling-event/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── container/ │ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ │ └── marko-tag.json │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── transclusion-repeated-nested/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── container/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── counter/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── list/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── transclusion-rerender-stateful/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── container/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── counter/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── transclusion-rerender-stateful-shared-key/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── container/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── counter/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── update-next-tick/ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ └── update-queued/ │ │ │ │ │ ├── component.js │ │ │ │ │ ├── index.marko │ │ │ │ │ └── test.js │ │ │ │ ├── index.test.js │ │ │ │ ├── template.component-browser.js │ │ │ │ └── template.marko │ │ │ ├── components-pages/ │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── async-boundaries/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-hello/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── app-hello-async/ │ │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ │ └── app-init-async/ │ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── await-surround-html/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── component-$globals/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── component-config/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── component-fixed-id/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-fixed-id/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-hello/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── component-globals/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── component-globals-async/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── component-implicit-event-handlers/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-button-component/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-button-split/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.component-browser.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── component-init-async/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── component-input/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── component-input-ref/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-bar/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── component-mount-root-hasRenderBody/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── component-mount-root-renderBody/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── component-state/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-foo/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-state-watch/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── custom-events/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-fancy-button/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── diff-body/ │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── diff-body-root/ │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── diff-head/ │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── diff-head-root/ │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── diff-html/ │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── diff-html-include-layout/ │ │ │ │ │ │ ├── layout.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── diff-title/ │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── dom-events/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── dom-events-bubbling/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── no-args/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── one-arg/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── one-arg-array/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── two-args/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── empty-component/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── b/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── empty-tag-with-key/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── dynamic-tag-key/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── split-tag-key/ │ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── getEl-no-rerender/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── getEl-split/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── split-component/ │ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── getRenderedComponents/ │ │ │ │ │ │ ├── browser.json │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-simple/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── components.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── if-empty-component/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── a/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── implicit-component-macro-params/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello-implicit-component/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── implicit-component-root/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── hello-explicit-component/ │ │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ │ └── implicit-nested/ │ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── hello-implicit-component/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── implicit-component-root-tag-params/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── hello-implicit-component/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── name/ │ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ │ └── marko-tag.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── include-input-preserve-focus/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── container/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── root/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── include-preserve/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── foo/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── init-components-before-widgets-loaded/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── init-components-before-widgets-loaded-multiple-async/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── init-components-immediate/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-bar/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── app-baz/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── init-components-immediate-await-client-reorder/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-bar/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── init-components-tag/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-bar/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── app-baz/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── init-components-tag-none/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-bar/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── app-baz/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── init-included/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-bar/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── app-baz/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── lifecycle-events/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── lifecycle-events/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── lifecycle-events-component-class/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── lifecycle-events-component-class-ctor/ │ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── lifecycle-events-component-object/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── nesting/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── c/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── d/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── no-update/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── no-update-attr/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── no-update-body-el/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── no-update-body-textarea/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── no-update-el/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── no-update-el-nested/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── no-update-input-value/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── no-update-component/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── counter/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── no-update-nested-component-key/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── child/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── container/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── nested-child/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── root/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── no-update-with-an-event/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── counter/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── onInput/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── onInput-assign-null/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── onInput-assign-null-and-return/ │ │ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── onInput-assign-object/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── onInput-assign-object-and-return/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── onInput-return/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── preserve-looped-attribute-tag/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── child/ │ │ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ │ │ └── marko-tag.json │ │ │ │ │ │ │ └── root/ │ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ │ └── marko-tag.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── preserve-no-update-for-loop/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── root/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── preserve-server-rendered-content-on-mount/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── root/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── preserve-transcluded-content-on-state-change/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── toggle-button/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── preserve-transcluded-key-on-state-change/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── child/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── container/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── root/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── remove-last-multi-root-component/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── child/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── root/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── render-and-mount-order/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-hello/ │ │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ │ └── inner/ │ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-wrapper/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── repeated-list-items-unkeyed/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── list-items/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── runtime-id/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── server-browser-unique-ids/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── server-render-dom-event-handlers/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── counter/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── server-render-function-references/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── split-async-keys/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-child/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-hello/ │ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── split-component-dynamic-tag/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-button/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── app-root/ │ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── split-component-renderer/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── app-button-split/ │ │ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ │ │ └── marko-tag.json │ │ │ │ │ │ │ ├── app-button-split-export-class/ │ │ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ │ │ └── marko-tag.json │ │ │ │ │ │ │ └── component-only/ │ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ ├── split-emit-multi-args/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── split-component/ │ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── tests.js │ │ │ │ │ └── xss/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ └── app-foo/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ └── index.marko │ │ │ │ │ ├── marko.json │ │ │ │ │ ├── template.marko │ │ │ │ │ └── tests.js │ │ │ │ └── index.test.js │ │ │ ├── components-server/ │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── cspNonce/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-simple/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── getRenderedWidgets/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── app-simple/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ └── scriptConcat/ │ │ │ │ │ ├── template.marko │ │ │ │ │ └── test.js │ │ │ │ └── index.test.js │ │ │ ├── hot-reload/ │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── load/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── initial-expected.html │ │ │ │ │ │ ├── modified-expected.html │ │ │ │ │ │ ├── reloaded-expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── require/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── initial-expected.html │ │ │ │ │ │ ├── modified-expected.html │ │ │ │ │ │ ├── reloaded-expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── require-custom-extension/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── initial-expected.html │ │ │ │ │ │ ├── modified-expected.html │ │ │ │ │ │ ├── reloaded-expected.html │ │ │ │ │ │ ├── template.html │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── require-custom-multiple-extensions/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── initial-expected.html │ │ │ │ │ │ ├── modified-expected.html │ │ │ │ │ │ ├── reloaded-expected.html │ │ │ │ │ │ ├── template.html │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── require-custom-without-period/ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── initial-expected.html │ │ │ │ │ │ ├── modified-expected.html │ │ │ │ │ │ ├── reloaded-expected.html │ │ │ │ │ │ ├── template.html │ │ │ │ │ │ └── test.js │ │ │ │ │ └── template-export-component/ │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── a/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ └── index.marko │ │ │ │ │ ├── b/ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ └── index.marko │ │ │ │ │ ├── initial-expected.html │ │ │ │ │ ├── reloaded-expected.html │ │ │ │ │ └── test.js │ │ │ │ └── index.test.js │ │ │ ├── marko-debug-babel-plugin/ │ │ │ │ ├── fixtures/ │ │ │ │ │ └── compiles/ │ │ │ │ │ ├── expected.js │ │ │ │ │ ├── input.js │ │ │ │ │ └── test.js │ │ │ │ └── index.test.js │ │ │ ├── markoc/ │ │ │ │ ├── babel-register.js │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── clean-dir/ │ │ │ │ │ │ ├── template1.marko │ │ │ │ │ │ ├── template2.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── compile-dir/ │ │ │ │ │ │ ├── template1.marko │ │ │ │ │ │ ├── template2.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── compile-dir-no-template/ │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── multiple-dirs/ │ │ │ │ │ │ ├── a/ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── b/ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── excluded/ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── single-template/ │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── single-template-write-version-comment/ │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ └── usage/ │ │ │ │ │ └── test.js │ │ │ │ └── index.test.js │ │ │ ├── morphdom/ │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── add-rearrange/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── add-rearrange-incompatible-keys/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── attr-value-empty-string/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── button-element-disabled/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── button-element-enabled/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── change-tagname/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── change-tagname-ids/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── data-table/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── data-table2/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── equal/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── id-change-tag-name/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── ids-nested/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── ids-nested-2/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── ids-nested-3/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── ids-nested-4/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── ids-nested-5/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── ids-nested-6/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── ids-nested-7/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── ids-prepend/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── incompatible-root-tag/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── incompatible-root-tag-with-keyed-child/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── input-element/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── input-element-disabled/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── input-element-enabled/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── keyed-incompatible/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── large/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── lengthen/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── one/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── reverse/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── reverse-ids/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── select-element/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── select-element-optgroup/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── shorten/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── simple/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── simple-div-one-to-one/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── simple-ids/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── simple-text-el/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── single-el-removal-first-keyed/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── single-el-removal-last-keyed/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── single-el-removal-middle-keyed/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── svg/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── svg-append/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── svg-append-new/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── svg-no-default-namespace/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── svg-xlink/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── swap-keyed/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── tag-to-text/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── tag-with-children-to-text/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── text-to-tag/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── text-to-text/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── textarea/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── todomvc/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ ├── todomvc2/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── from.html │ │ │ │ │ │ └── to.html │ │ │ │ │ └── two/ │ │ │ │ │ ├── expected.html │ │ │ │ │ ├── from.html │ │ │ │ │ └── to.html │ │ │ │ └── index.test.js │ │ │ ├── node-require/ │ │ │ │ └── index.test.js │ │ │ ├── package.json │ │ │ ├── render/ │ │ │ │ ├── fixtures/ │ │ │ │ │ ├── attr-boolean-dynamic/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attr-boolean-placeholder/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attr-boolean-static/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attr-empty/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attr-empty-dynamic/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attr-escape-xml/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attr-newline-escaped/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attr-number/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attr-placeholder-escaped-undefined/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attr-placeholder-unescaped-undefined/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attr-unquoted/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attr-value-number/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attr-value-obj/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attr-value-obj-custom-tag/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── tag.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attr-value-partial-string/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attributes-dynamic-custom-tag/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-hello/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attributes-dynamic-custom-tag-mixed/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-hello/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attributes-dynamic-xss/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-hello/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── attrs/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attrs-normalize-for-native-tag/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── custom-tag/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── attrs-with-render-body/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── custom-tag/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── autocomplete/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-hello/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── await-client-reorder/ │ │ │ │ │ │ ├── expected-events-vdom.json │ │ │ │ │ │ ├── expected-events.json │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-client-reorder-cspnonce/ │ │ │ │ │ │ ├── expected-events-vdom.json │ │ │ │ │ │ ├── expected-events.json │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-client-reorder-invoked-once/ │ │ │ │ │ │ ├── expected-events-vdom.json │ │ │ │ │ │ ├── expected-events.json │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-client-reorder-mixed/ │ │ │ │ │ │ ├── expected-events-vdom.json │ │ │ │ │ │ ├── expected-events.json │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-client-reorder-nested/ │ │ │ │ │ │ ├── expected-events-vdom.json │ │ │ │ │ │ ├── expected-events.json │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-client-reorder-sync/ │ │ │ │ │ │ ├── expected-events.json │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── await-client-reorder-with-runtimeId/ │ │ │ │ │ │ ├── expected-events-vdom.json │ │ │ │ │ │ ├── expected-events.json │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-error/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── await-error-empty-catch/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── await-error-no-catch/ │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-error-rethrow-catch/ │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-macros/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── await-no-update-content/ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-order-random/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── await-ordering/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── await-placeholder/ │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-promise/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── await-render-error/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-render-error-bluebird/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-sync/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── await-timeout/ │ │ │ │ │ │ ├── expected-events.json │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── beginAsync/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── body-placeholder-literal/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── body-placeholder-literal-escaped/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── body-placeholder-literal-unescaped/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── body-placeholder-literal-unescaped-escaped/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── body-placeholder-literal2/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── circular-renderer/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ ├── test-circular-renderer-a/ │ │ │ │ │ │ │ │ ├── renderer.js │ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ │ └── test-circular-renderer-b/ │ │ │ │ │ │ │ ├── renderer.js │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── circular-tags-no-write-to-disk/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── navigation-item/ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── circular-template/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ ├── test-circular-template-a/ │ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ │ └── test-circular-template-b/ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── class-attr-array/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── class-attr-object/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── class-attr-shorthand-plus-expression/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── class-attr-string/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── comments-preserve-ie-conditional/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── comments-remove/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── component-aria-key/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-file-export-class/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello/ │ │ │ │ │ │ │ ├── component.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-inline-style-important/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── component-label-for/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── component-safe-json/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── foo/ │ │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ │ └── bar/ │ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── split/ │ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ └── split-child/ │ │ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── components-await/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── components-await-beginAsync/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── beginAsync/ │ │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ │ └── hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── components-await-title/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── hello/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── layout.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── concise/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── concise-verbose/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── conditional-attributes/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── custom-tag/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-hello/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── custom-tag-as-template/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-template-as-tag/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── custom-tag-autodiscover/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-hello/ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ └── home/ │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ └── test-home/ │ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test-home-renderer.js │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── custom-tag-autodiscover-repeated-names/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-hello/ │ │ │ │ │ │ │ └── test-hello.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── pages/ │ │ │ │ │ │ │ └── home/ │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ └── test-home/ │ │ │ │ │ │ │ │ └── test-home.marko │ │ │ │ │ │ │ └── home.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test-home-renderer.js │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── custom-tag-body/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-hello/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── custom-tag-components-file/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── bye.marko │ │ │ │ │ │ │ └── hello.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── custom-tag-data-placeholders/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-hello/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── custom-tag-hyphen-attrs/ │ │ │ │ │ │ ├── custom-tag.js │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── custom-tag-open-tag-only/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── open-tag-only-tag.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── custom-tag-target-property/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-target-property/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── custom-tag-template-index/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-tag/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── custom-tag-with-directives/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-hello/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── data/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── declaration/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── default-attributes/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-default-attributes/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── div-self-closed/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── doctype/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── dtd/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── dynamic-attributes/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-dynamic-attributes/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── dynamic-attributes3/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-dynamic-attributes3/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── dynamic-split-component/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ ├── dynamic-non-split/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── dynamic-non-split-no-body/ │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ ├── dynamic-split/ │ │ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ │ └── dynamic-split-no-body/ │ │ │ │ │ │ │ ├── component-browser.js │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── dynamic-tag-arguments/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── layout.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── dynamic-tag-dashed-attributes/ │ │ │ │ │ │ ├── dynamic.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── dynamic-tag-layout/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── layout.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── dynamic-tag-lazy-attributes/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── dynamic-tag-name/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── dynamic-tag-name-concise/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── dynamic-tag-object-class-style/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── dynamic-tag-template/ │ │ │ │ │ │ ├── dynamic-target.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── empty-close-tag/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── entities/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── escape-at-tag/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── child/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── escape-script/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── escape-style/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── escaped-dollar/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── flush-here-and-after-async-after/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── flush-here-and-after-async-before/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── flush-here-and-after-async-reverse/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── flush-here-and-after-sync/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── flush-here-and-after-with-body/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── child.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-array-index/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-attr/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-attr-separator/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-attr-separator-html/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-attr-separator-status-var/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-attr-status-var-string/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-if-attr/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-iterator/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-iterator-attr/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-native/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-props/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-props-attr/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-props-status-var/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-range/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-range-descending-step/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-range-from-to-expr/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-range-step-2/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-range-step-neg2/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-range-to-expr/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-tag/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-tag-array-expression/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-tag-block-scoped-key/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── for-tag-native/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-tag-separator/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-tag-separator-status-var/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── for-tag-status-var/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── global-data/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── global-runtime-id/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── hello-dynamic/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── hello-dynamic.marko.expected.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── hello-static/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── html/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── html-comment-tag/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── html-comment-tag-dynamic/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── html-entities-body/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── if/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── if-attr/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── if-concise/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── if-else/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── if-else-attr/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── if-else-concise/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── if-else-if/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── if-else-if-attr/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── if-else-if-else/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── if-else-if-else-attr/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── ignore-unrecognized-tag/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── img/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── import/ │ │ │ │ │ │ ├── bar.js │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── include-target.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-attr/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── include-target.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-body/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── include-target.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-body-empty/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── include-target.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-component/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── my-component/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── include-html-target.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-data/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── include-target.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-data-body/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── include-target.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-dynamic/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── include-target.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-html/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── include-html-target.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-hyphen-attrs/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── include-target.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-hyphen-attrs-multiple/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── include-target.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-layout/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── layout-default.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-layout-data/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── layout-default.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-layout-data-attrs/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── layout-default.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-layout-v3-compat/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── layout-default.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-renderBody/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-renderBody-data-and-attrs/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-renderBody-no-data/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── include-html-target.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-renderBody-string-arg/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── include-html-target.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-string/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-text/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── include-resource-target.txt │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── include-whitespace/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── include-target.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── inline-script/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── invoke/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── label-for/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── macro/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── macro-body/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── macro-boolean/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── macro-no-args/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tag-shorthand-complex-logic/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-message/ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tag-shorthand-complex-logic-repeated/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-message/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tag-shorthand-hyphens/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-message/ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tag-shorthand-hyphens-repeated/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-message/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tag-shorthand-simple/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-message/ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tag-shorthand-simple-conditional/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-message/ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tag-shorthand-simple-declared/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-message/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tag-shorthand-simple-repeated/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-message/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tag-shorthand-simple-repeated-conditional/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-message/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tag-with-existing-input/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test/ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tag-with-render-body-params/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test/ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tag-with-scriptlet/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test/ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tags/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-nested-tags-overlay/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ ├── renderer.js │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tags-concise/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-nested-tags-tabs/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ ├── renderer.js │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tags-deep/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-nested-tags-deep/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ ├── renderer.js │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tags-empty-body/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-nested-tags-tabs/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ ├── renderer.js │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tags-repeatable/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── fancy-table.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tags-repeated/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-nested-tags-tabs/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ ├── renderer.js │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tags-repeated-parent/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-nested-tags-overlay/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ ├── renderer.js │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tags-repeated-with-default-render-body/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-nested-tags-tabs/ │ │ │ │ │ │ │ ├── index.marko │ │ │ │ │ │ │ └── marko-tag.json │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── nested-tags-self-closing/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-nested-tags-tabs/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ ├── renderer.js │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── open-tag-only/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── open-tag-only-renderer/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── renderer.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── paren-grouping/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── pattern-attr/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── pattern-attr-runtime/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── placeholders-body-expressions/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── preserveWhitespace-global/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── preserveWhitespace-load-option/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── regexp-attr/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── renderer-dir-main.js/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── renderer-index.js/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── renderer/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── require/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test-helpers.js │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── reserved-words/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── my-custom-tag.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── scanned-tags/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ ├── scanned-a/ │ │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ │ ├── scanned-b/ │ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ │ ├── scanned-c/ │ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ │ ├── scanned-d/ │ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ │ ├── scanned-e/ │ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ │ ├── scanned-f/ │ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ │ └── renderer.js │ │ │ │ │ │ │ ├── scanned-g/ │ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ │ └── scanned-h/ │ │ │ │ │ │ │ └── index.js │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── script/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── script-escaped-placeholder/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── script-json-stringify/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── script-string-literal-placeholder/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── script-tag-entities/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── self-closing-dynamic/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── shorthand-class-merge/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── shorthand-class-merge2/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── shorthand-class-plus-class-obj/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── shorthand-classes-many-classes/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── shorthand-div-id/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── shorthand-div-id-dynamic/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── shorthand-div.foo/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── shorthand-id-and-classes/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── shorthand-verbose/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── simple/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── simple-conditionals/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── space-around-equal-sign-for-attr/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── space-in-complex-attr-value/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── spread-attribute-class-style-html-tag/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── spread-attribute-custom-tag/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-tag/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── spread-attribute-function-object/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── spread-attribute-html-tag/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── spread-attribute-literal/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── spread-attribute-no-mutate/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── spread-attribute-order-custom-tag/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-tag/ │ │ │ │ │ │ │ └── index.marko │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── spread-attribute-order-html-tag/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── spread-attribute-undefined/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── static-trees/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── static-var-complex/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── string-expressions/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── style-attr-array-mixed/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── style-attr-object/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── style-attr-object-units/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── style-attr-string/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── style-attr-string-dynamic/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── style-tag-dynamic-text/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── svg/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── syntax-concise/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tabs/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ ├── renderer.js │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── syntax-mixed/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tabs/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ ├── renderer.js │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── syntax-simple-concise/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── syntax-simple-mixed/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── syntax-simple-verbose/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── syntax-verbose/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tabs/ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ ├── renderer.js │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── tag-empty/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── taglib-imports-nested/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── nested-import/ │ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ │ ├── list/ │ │ │ │ │ │ │ │ │ ├── icon-list/ │ │ │ │ │ │ │ │ │ │ ├── marko-tag.json │ │ │ │ │ │ │ │ │ │ ├── renderer.js │ │ │ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ │ │ │ └── marko.json │ │ │ │ │ │ │ │ └── marko.json │ │ │ │ │ │ │ └── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── taglib-imports-package-json/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── tags-dir-null/ │ │ │ │ │ │ ├── components/ │ │ │ │ │ │ │ └── test-hello/ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── template-tag-dynamic-attributes/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── marko.json │ │ │ │ │ │ ├── tags/ │ │ │ │ │ │ │ └── test-template-tag-dynamic-attributes/ │ │ │ │ │ │ │ └── template.marko │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── text-replacement/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── toHTML/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── toString-object/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── unary-expression/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── unless-else/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── var/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── var-assign/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── var-new-Date/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── var-tag-commas/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── variable-id-root-node/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── while-attr/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── while-tag/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── whitespace/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── whitespace-contentplaceholder-literal-string/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── whitespace-div/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── whitespace-inline-elements/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── whitespace-marko-preserve-whitespace-attr/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── whitespace-normalize-inner-whitespace/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── whitespace-normalize-inner-whitespace-concise/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── whitespace-normalize-inner-whitespace2/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── whitespace-pre/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── whitespace-pre-code/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── whitespace-script/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ ├── whitespace-textarea/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ └── vdom-expected.html │ │ │ │ │ └── xml-escaping/ │ │ │ │ │ ├── expected.html │ │ │ │ │ ├── template.marko │ │ │ │ │ ├── test.js │ │ │ │ │ └── vdom-expected.html │ │ │ │ ├── fixtures-async-callback/ │ │ │ │ │ ├── await-arg/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-args/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-args-merge/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-client-reorder/ │ │ │ │ │ │ ├── expected-events-vdom.json │ │ │ │ │ │ ├── expected-events.json │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-client-reorder-cspnonce/ │ │ │ │ │ │ ├── expected-events-vdom.json │ │ │ │ │ │ ├── expected-events.json │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-client-reorder-invoked-once/ │ │ │ │ │ │ ├── expected-events-vdom.json │ │ │ │ │ │ ├── expected-events.json │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-client-reorder-mixed/ │ │ │ │ │ │ ├── expected-events-vdom.json │ │ │ │ │ │ ├── expected-events.json │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-client-reorder-nested/ │ │ │ │ │ │ ├── expected-events-vdom.json │ │ │ │ │ │ ├── expected-events.json │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-client-reorder-sync/ │ │ │ │ │ │ ├── expected-events.json │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-data-provider-method/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-data-providers/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-error/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-error-message-attr/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-function-data-provider-callback/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-function-data-provider-return-promise/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-function-data-provider-sync/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └── test.js │ │ │ │ │ ├── await-out-of-order-with-in-order/ │ │ │ │ │ │ ├── expected.html │ │ │ │ │ │ ├── template.marko │ │ │ │ │ │ └
Showing preview only (391K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3721 symbols across 1314 files)
FILE: .sizes/comments.csr/entry.js
function $setup (line 55) | function $setup($scope) {
FILE: .sizes/counter.csr/entry.js
function $setup (line 10) | function $setup($scope) {
FILE: .sizes/dom.js
function attrTag (line 4) | function attrTag(attrs) {
function attrTags (line 11) | function attrTags(first, attrs) {
function _assert_hoist (line 22) | function _assert_hoist(value) {}
function _assert_init (line 23) | function _assert_init(scope, accessor) {
function forIn (line 26) | function forIn(obj, cb) {
function forOf (line 29) | function forOf(list, cb) {
function forTo (line 35) | function forTo(to, from, step, cb) {
function forUntil (line 41) | function forUntil(until, from, step, cb) {
function _call (line 47) | function _call(fn, v) {
function stringifyClassObject (line 50) | function stringifyClassObject(name, value) {
function stringifyStyleObject (line 53) | function stringifyStyleObject(name, value) {
function toDelimitedString (line 56) | function toDelimitedString(val, delimiter, stringify) {
function isEventHandler (line 72) | function isEventHandler(name) {
function getEventHandlerName (line 75) | function getEventHandlerName(name) {
function normalizeDynamicRenderer (line 78) | function normalizeDynamicRenderer(value) {
function toArray (line 87) | function toArray(opt) {
function push (line 90) | function push(opt, item) {
function _on (line 98) | function _on(element, type, handler) {
function createDelegator (line 103) | function createDelegator() {
function handleDelegated (line 110) | function handleDelegated(ev) {
function stripSpacesAndPunctuation (line 116) | function stripSpacesAndPunctuation(str) {
function parseHTML (line 120) | function parseHTML(html, ns) {
function createScope (line 127) | function createScope($global, closestBranch) {
function skipScope (line 131) | function skipScope() {
function findBranchWithKey (line 134) | function findBranchWithKey(scope, key) {
function destroyBranch (line 139) | function destroyBranch(branch) {
function destroyScope (line 142) | function destroyScope(scope) {
function destroyNestedScopes (line 145) | function destroyNestedScopes(scope) {
function resetControllers (line 150) | function resetControllers(scope) {
function removeAndDestroyBranch (line 153) | function removeAndDestroyBranch(branch) {
function insertBranchBefore (line 156) | function insertBranchBefore(branch, parentNode, nextSibling) {
function tempDetachBranch (line 159) | function tempDetachBranch(branch) {
function schedule (line 164) | function schedule() {
function flushAndWaitFrame (line 167) | function flushAndWaitFrame() {
function triggerMacroTask (line 170) | function triggerMacroTask() {
function _let (line 177) | function _let(id, fn) {
function _const (line 194) | function _const(valueAccessor, fn) {
function _or (line 203) | function _or(id, fn, defaultPending = 1, scopeIdAccessor = "L") {
function _for_closure (line 216) | function _for_closure(ownerLoopNodeAccessor, fn) {
function _if_closure (line 234) | function _if_closure(ownerConditionalNodeAccessor, branch, fn) {
function subscribeToScopeSet (line 250) | function subscribeToScopeSet(ownerScope, accessor, scope) {
function _closure (line 258) | function _closure(...closureSignals) {
function _closure_get (line 273) | function _closure_get(valueAccessor, fn, getOwnerScope, resumeId) {
function _child_setup (line 291) | function _child_setup(setup) {
function _var (line 299) | function _var(scope, childAccessor, signal) {
function _return_change (line 303) | function _return_change(scope, changeHandler) {
function _id (line 308) | function _id({ $: $global }) {
function _script (line 315) | function _script(id, fn) {
function _el_read (line 323) | function _el_read(value) {
function _hoist (line 338) | function _hoist(...path) {
function _hoist_resume (line 347) | function _hoist_resume(id, ...path) {
function walk (line 351) | function walk(startNode, walkCodes, branch) {
function walkInternal (line 354) | function walkInternal(currentWalkIndex, walkCodes, scope) {
function createBranch (line 401) | function createBranch($global, renderer, parentScope, parentNode) {
function setParentBranch (line 410) | function setParentBranch(branch, parentBranch) {
function createAndSetupBranch (line 415) | function createAndSetupBranch($global, renderer, parentScope, parentNode) {
function setupBranch (line 421) | function setupBranch(renderer, branch) {
function _content (line 424) | function _content(id, template, walks, setup, params, dynamicScopesAcces...
function _content_resume (line 467) | function _content_resume(
function _content_closures (line 480) | function _content_closures(renderer, closureFns) {
function enableBranches (line 499) | function enableBranches() {
function initEmbedded (line 506) | function initEmbedded(readyId, runtimeId) {
function init (line 521) | function init(runtimeId = "M") {
function runResumeEffects (line 695) | function runResumeEffects(render) {
function _resume (line 702) | function _resume(id, obj) {
function _var_resume (line 705) | function _var_resume(id, signal) {
function _el (line 708) | function _el(id, accessor) {
function _attr_input_checked_default (line 716) | function _attr_input_checked_default(scope, nodeAccessor, checked) {
function _attr_input_checked (line 725) | function _attr_input_checked(scope, nodeAccessor, checked, checkedChange) {
function _attr_input_checked_script (line 734) | function _attr_input_checked_script(scope, nodeAccessor) {
function _attr_input_checkedValue_default (line 744) | function _attr_input_checkedValue_default(
function _attr_input_checkedValue (line 764) | function _attr_input_checkedValue(
function _attr_input_checkedValue_script (line 791) | function _attr_input_checkedValue_script(scope, nodeAccessor) {
function _attr_input_value_default (line 828) | function _attr_input_value_default(scope, nodeAccessor, value) {
function _attr_input_value (line 836) | function _attr_input_value(scope, nodeAccessor, value, valueChange) {
function _attr_input_value_script (line 846) | function _attr_input_value_script(scope, nodeAccessor) {
function setInputValue (line 859) | function setInputValue(el, value) {
function _attr_select_value_default (line 896) | function _attr_select_value_default(scope, nodeAccessor, value) {
function _attr_select_value (line 916) | function _attr_select_value(scope, nodeAccessor, value, valueChange) {
function _attr_select_value_script (line 932) | function _attr_select_value_script(scope, nodeAccessor) {
function setSelectValue (line 965) | function setSelectValue(el, value, multiple) {
function getSelectValue (line 970) | function getSelectValue(el, multiple) {
function _attr_details_or_dialog_open_default (line 975) | function _attr_details_or_dialog_open_default(scope, nodeAccessor, open) {
function _attr_details_or_dialog_open (line 978) | function _attr_details_or_dialog_open(scope, nodeAccessor, open, openCha...
function _attr_details_or_dialog_open_script (line 990) | function _attr_details_or_dialog_open_script(scope, nodeAccessor) {
function syncControllableFormInput (line 1000) | function syncControllableFormInput(el, hasChanged, onChange) {
function handleChange (line 1006) | function handleChange(ev) {
function handleFormReset (line 1009) | function handleFormReset(ev) {
function hasValueChanged (line 1017) | function hasValueChanged(el) {
function hasCheckboxChanged (line 1020) | function hasCheckboxChanged(el) {
function hasSelectChanged (line 1023) | function hasSelectChanged(el) {
function hasFormElementChanged (line 1027) | function hasFormElementChanged(el) {
function normalizeStrProp (line 1032) | function normalizeStrProp(value) {
function normalizeBoolProp (line 1035) | function normalizeBoolProp(value) {
function _to_text (line 1038) | function _to_text(value) {
function _attr (line 1041) | function _attr(element, name, value) {
function setAttribute (line 1044) | function setAttribute(element, name, value) {
function _attr_class (line 1050) | function _attr_class(element, value) {
function _attr_class_items (line 1057) | function _attr_class_items(element, items) {
function _attr_class_item (line 1060) | function _attr_class_item(element, name, value) {
function _attr_style (line 1063) | function _attr_style(element, value) {
function _attr_style_items (line 1070) | function _attr_style_items(element, items) {
function _attr_style_item (line 1073) | function _attr_style_item(element, name, value) {
function _attr_nonce (line 1076) | function _attr_nonce(scope, nodeAccessor) {
function _text (line 1079) | function _text(node, value) {
function _text_content (line 1083) | function _text_content(node, value) {
function _attrs (line 1087) | function _attrs(scope, nodeAccessor, nextAttrs) {
function _attrs_content (line 1096) | function _attrs_content(scope, nodeAccessor, nextAttrs) {
function hasAttrAlias (line 1100) | function hasAttrAlias(element, attr, nextAttrs) {
function _attrs_partial (line 1107) | function _attrs_partial(scope, nodeAccessor, nextAttrs, skip) {
function _attrs_partial_content (line 1122) | function _attrs_partial_content(scope, nodeAccessor, nextAttrs, skip) {
function attrsInternal (line 1126) | function attrsInternal(scope, nodeAccessor, nextAttrs) {
function _attr_content (line 1209) | function _attr_content(scope, nodeAccessor, value) {
function _attrs_script (line 1221) | function _attrs_script(scope, nodeAccessor) {
function _html (line 1242) | function _html(scope, value, accessor) {
function normalizeAttrValue (line 1256) | function normalizeAttrValue(value) {
function normalizeString (line 1259) | function normalizeString(value) {
function _lifecycle (line 1262) | function _lifecycle(scope, thisObj, index = 0) {
function removeChildNodes (line 1271) | function removeChildNodes(startNode, endNode) {
function insertChildNodes (line 1279) | function insertChildNodes(parentNode, referenceNode, startNode, endNode) {
function toInsertNode (line 1282) | function toInsertNode(startNode, endNode) {
function _await_promise (line 1293) | function _await_promise(nodeAccessor, params) {
function _await_content (line 1423) | function _await_content(nodeAccessor, template, walks, setup) {
function _try (line 1436) | function _try(nodeAccessor, template, walks, setup) {
function renderCatch (line 1454) | function renderCatch(scope, error) {
function _if (line 1474) | function _if(nodeAccessor, ...branchesArgs) {
function _resume_dynamic_tag (line 1579) | function _resume_dynamic_tag() {
function dynamicTagScript (line 1582) | function dynamicTagScript(branch) {
function setConditionalRenderer (line 1585) | function setConditionalRenderer(
function loop (line 1629) | function loop(forEach) {
function createBranchWithTagNameOrRenderer (line 1757) | function createBranchWithTagNameOrRenderer(
function bySecondArg (line 1786) | function bySecondArg(_item, index) {
function byFirstArg (line 1789) | function byFirstArg(name) {
function queueRender (line 1801) | function queueRender(scope, signal, signalKey, value, scopeKey = scope.L) {
function queuePendingRender (line 1809) | function queuePendingRender(render) {
function queueEffect (line 1819) | function queueEffect(scope, fn) {
function run (line 1822) | function run() {
function prepareEffects (line 1835) | function prepareEffects(fn) {
function runRenders (line 1857) | function runRenders() {
function $signalReset (line 1928) | function $signalReset(scope, id) {
function $signal (line 1932) | function $signal(scope, id) {
function abort (line 1938) | function abort(ctrl) {
method init (line 1947) | init(warp10Noop) {
method registerRenderer (line 1953) | registerRenderer(fn) {
method setScopeNodes (line 1958) | setScopeNodes(branch, startNode, endNode) {
method runComponentEffects (line 1961) | runComponentEffects() {
method runComponentDestroy (line 1964) | runComponentDestroy() {
method createRenderer (line 1978) | createRenderer(params, clone) {
method render (line 1988) | render(out, component, renderer, args) {
function mount (line 2028) | function mount(input = {}, reference, position) {
FILE: packages/compiler/babel-types.d.ts
constant MARKO_TYPES (line 5) | const MARKO_TYPES: string[];
type Program (line 8) | interface Program {
FILE: packages/compiler/babel-utils.d.ts
type AttributeDefinition (line 3) | interface AttributeDefinition {
type PluginDefinition (line 22) | interface PluginDefinition<T = any> {
type ParsePluginDefinition (line 26) | interface ParsePluginDefinition<T = any> {
type TagDefinition (line 30) | interface TagDefinition {
type TaglibLookup (line 77) | interface TaglibLookup {
type Attribute (line 92) | interface Attribute {
type Tag (line 110) | interface Tag {
type FunctionPlugin (line 152) | type FunctionPlugin<T = any> = (
type EnterExitPlugin (line 156) | interface EnterExitPlugin<T = any> {
type ModulePlugin (line 161) | interface ModulePlugin<T = any> {
type ModuleFunctionPlugin (line 165) | interface ModuleFunctionPlugin<T = any> {
type ParsePlugin (line 169) | type ParsePlugin<T = any> = ModuleFunctionPlugin<T> | FunctionPlugin<T>;
type Plugin (line 171) | type Plugin<T = any> =
type Loc (line 240) | type Loc = { line: number; column: number; index?: number };
type LocRange (line 241) | type LocRange = { start: Loc; end: Loc };
type DiagnosticType (line 336) | enum DiagnosticType {
type Diagnostic (line 343) | interface Diagnostic {
type DiagnosticOptions (line 350) | interface DiagnosticOptions {
type ConfirmFix (line 381) | interface ConfirmFix {
type SelectFix (line 387) | interface SelectFix {
type Computed (line 397) | type Computed =
FILE: packages/compiler/index.d.ts
type _Config (line 7) | type _Config = typeof import("./config");
type Config (line 8) | interface Config extends _Config {}
type Dep (line 9) | interface Dep {
type VirtualDep (line 15) | interface VirtualDep {
type MarkoMeta (line 24) | interface MarkoMeta {
type CompileResult (line 35) | interface CompileResult {
FILE: packages/compiler/register.d.ts
type Extensions (line 3) | type Extensions = Partial<typeof require.extensions>;
FILE: packages/compiler/scripts/types/babel-traverse.js
constant HUB_INTERFACE (line 32) | const HUB_INTERFACE = "export interface HubInterface {";
constant HUB_CLASS (line 33) | const HUB_CLASS =
constant IMPORT (line 35) | const IMPORT = 'import * as t from "@babel/types"';
constant EXPORT_NODE (line 36) | const EXPORT_NODE = "export import Node = t.Node;";
constant NODE_PATH_GET (line 37) | const NODE_PATH_GET =
constant ASSERT (line 41) | const ASSERT =
constant BREAK (line 43) | const BREAK = "\n ";
FILE: packages/compiler/scripts/types/babel-types.js
function areAllRemainingFieldsNullable (line 377) | function areAllRemainingFieldsNullable(fieldName, fieldNames, fields) {
function hasDefault (line 382) | function hasDefault(field) {
function isNullable (line 386) | function isNullable(field) {
function sortFieldNames (line 390) | function sortFieldNames(fields, type) {
function stringifyValidator (line 401) | function stringifyValidator(validator, nodePrefix) {
function isValueType (line 463) | function isValueType(type) {
function toFunctionName (line 467) | function toFunctionName(typeName) {
FILE: packages/compiler/src/babel-plugin/file.js
class MarkoFile (line 5) | class MarkoFile extends File {
method addHelper (line 6) | addHelper() {
method buildCodeFrameError (line 10) | buildCodeFrameError(node, msg) {
FILE: packages/compiler/src/babel-plugin/index.js
constant SOURCE_FILES (line 23) | const SOURCE_FILES = new WeakMap();
method manipulateOptions (line 68) | manipulateOptions(opts) {
method parserOverride (line 90) | parserOverride(code) {
method pre (line 96) | pre(file) {
function getMarkoFile (line 152) | function getMarkoFile(code, fileOpts, markoOpts) {
function shallowClone (line 339) | function shallowClone(data) {
function mergeVisitors (line 376) | function mergeVisitors(all) {
function toExploded (line 389) | function toExploded(visitor) {
function cloneVisitor (line 399) | function cloneVisitor(visitor) {
function cloneVisit (line 408) | function cloneVisit(visit) {
function traverseAll (line 416) | function traverseAll(file, visitors) {
function addPlugin (line 428) | function addPlugin(meta, arr, plugin) {
function stripTypes (line 444) | function stripTypes(file) {
function isMarkoOutput (line 500) | function isMarkoOutput(output) {
function finalizeMeta (line 504) | function finalizeMeta(meta) {
FILE: packages/compiler/src/babel-plugin/parser.js
function parseMarko (line 28) | function parseMarko(file) {
function sortByStart (line 665) | function sortByStart(a, b) {
function templateElement (line 669) | function templateElement(value, tail) {
FILE: packages/compiler/src/babel-plugin/plugins/migrate.js
method enter (line 11) | enter(path) {
method exit (line 19) | exit(path) {
function getMigratorsForTag (line 30) | function getMigratorsForTag(path) {
FILE: packages/compiler/src/babel-plugin/plugins/transform.js
method enter (line 11) | enter(path) {
method exit (line 20) | exit(path) {
function getTransformersForTag (line 32) | function getTransformersForTag(path) {
FILE: packages/compiler/src/babel-plugin/util/plugin-hooks.js
function enter (line 3) | function enter(plugin, ...args) {
function exit (line 15) | function exit(plugin, ...args) {
FILE: packages/compiler/src/babel-utils/assert.js
function assertAllowedAttributes (line 1) | function assertAllowedAttributes(path, allowed) {
function assertNoAttributes (line 20) | function assertNoAttributes(path) {
function assertNoParams (line 32) | function assertNoParams(path) {
function assertNoAttributeTags (line 44) | function assertNoAttributeTags(path) {
function assertNoArgs (line 53) | function assertNoArgs(path) {
function assertNoVar (line 65) | function assertNoVar(path) {
function assertAttributesOrArgs (line 74) | function assertAttributesOrArgs(path) {
function assertAttributesOrSingleArg (line 87) | function assertAttributesOrSingleArg(path) {
FILE: packages/compiler/src/babel-utils/compute.js
function computeNode (line 4) | function computeNode(node) {
FILE: packages/compiler/src/babel-utils/diagnostics.js
function diagnosticError (line 8) | function diagnosticError(path, options) {
function diagnosticWarn (line 12) | function diagnosticWarn(path, options) {
function diagnosticDeprecate (line 16) | function diagnosticDeprecate(path, options) {
function diagnosticSuggest (line 20) | function diagnosticSuggest(path, options) {
function add (line 24) | function add(type, path, options) {
FILE: packages/compiler/src/babel-utils/get-file.js
function getFile (line 3) | function getFile() {
function getProgram (line 11) | function getProgram() {
function getFileInternal (line 19) | function getFileInternal() {
function setFileInternal (line 23) | function setFileInternal(file) {
FILE: packages/compiler/src/babel-utils/imports.js
constant IMPORTS_KEY (line 6) | const IMPORTS_KEY = Symbol();
constant FS_START (line 7) | const FS_START = path.sep === "/" ? path.sep : /^(.*?:)/.exec(cwd)[1];
function resolveRelativePath (line 9) | function resolveRelativePath(file, request) {
function importDefault (line 24) | function importDefault(file, request, nameHint) {
function importNamed (line 60) | function importNamed(file, request, name, nameHint = name) {
function importStar (line 93) | function importStar(file, request, nameHint) {
function getImports (line 129) | function getImports(file) {
FILE: packages/compiler/src/babel-utils/index.js
function defineTag (line 62) | function defineTag(tag) {
FILE: packages/compiler/src/babel-utils/loc.js
constant LINE_INDEX_KEY (line 1) | const LINE_INDEX_KEY = Symbol();
function getLoc (line 3) | function getLoc(file, index) {
function getLocRange (line 7) | function getLocRange(file, start, end) {
function withLoc (line 22) | function withLoc(file, node, start, end) {
function getStart (line 29) | function getStart(file, node) {
function getEnd (line 42) | function getEnd(file, node) {
function locToIndex (line 55) | function locToIndex(file, loc) {
function getLineIndexes (line 60) | function getLineIndexes(file) {
function findLoc (line 77) | function findLoc(lineIndexes, startLine, index) {
FILE: packages/compiler/src/babel-utils/parse.js
function parseStatements (line 9) | function parseStatements(
function parseExpression (line 19) | function parseExpression(
function parseParams (line 29) | function parseParams(file, str, sourceStart, sourceEnd) {
function parseArgs (line 45) | function parseArgs(file, str, sourceStart, sourceEnd) {
function parseVar (line 55) | function parseVar(file, str, sourceStart, sourceEnd) {
function parseTemplateLiteral (line 71) | function parseTemplateLiteral(file, str, sourceStart, sourceEnd) {
function parseTypeArgs (line 87) | function parseTypeArgs(file, str, sourceStart, sourceEnd) {
function parseTypeParams (line 98) | function parseTypeParams(file, str, sourceStart, sourceEnd) {
function tryParse (line 114) | function tryParse(
function ensureParseError (line 179) | function ensureParseError(file, node, sourceStart, sourceEnd) {
function createParseError (line 189) | function createParseError(file, sourceStart, sourceEnd, label, errorLoc) {
function getBoundedRange (line 203) | function getBoundedRange(range, loc) {
FILE: packages/compiler/src/babel-utils/taglib.js
constant SEEN_TAGS_KEY (line 1) | const SEEN_TAGS_KEY = Symbol();
function getTaglibLookup (line 3) | function getTaglibLookup(file) {
function getTagDefForTagName (line 7) | function getTagDefForTagName(file, tagName) {
FILE: packages/compiler/src/babel-utils/tags.js
constant MACRO_IDS_KEY (line 11) | const MACRO_IDS_KEY = Symbol();
constant MACRO_NAMES_KEY (line 12) | const MACRO_NAMES_KEY = "__marko_macro_names__";
constant TRANSPARENT_TAGS (line 13) | const TRANSPARENT_TAGS = new Set([
function isNativeTag (line 22) | function isNativeTag(path) {
function isDynamicTag (line 36) | function isDynamicTag(path) {
function isAttributeTag (line 40) | function isAttributeTag(path) {
function isTransparentTag (line 47) | function isTransparentTag(path) {
function registerMacro (line 54) | function registerMacro(path, name) {
function hasMacro (line 74) | function hasMacro(path, name) {
function isMacroTag (line 79) | function isMacroTag(path) {
function getMacroIdentifierForName (line 84) | function getMacroIdentifierForName(path, name) {
function getMacroIdentifier (line 115) | function getMacroIdentifier(path) {
function getTagTemplate (line 133) | function getTagTemplate(tag) {
function getTagDef (line 145) | function getTagDef(path) {
function getFullyResolvedTagName (line 168) | function getFullyResolvedTagName(path) {
function findParentTag (line 185) | function findParentTag(path) {
function findAttributeTags (line 207) | function findAttributeTags(path, attributeTags = []) {
function getArgOrSequence (line 222) | function getArgOrSequence(path) {
function isLoopTag (line 237) | function isLoopTag(path) {
function loadFileForTag (line 246) | function loadFileForTag(tag) {
function loadFileForImport (line 260) | function loadFileForImport(file, request) {
function resolveMarkoFile (line 271) | function resolveMarkoFile(file, filename) {
function getTemplateId (line 296) | function getTemplateId(opts, request, child) {
function resolveTagImport (line 342) | function resolveTagImport(path, request) {
function createNewFileOpts (line 366) | function createNewFileOpts(opts, filename) {
function encodeTemplateId (line 389) | function encodeTemplateId(id) {
FILE: packages/compiler/src/babel-utils/template-string.js
function normalizeTemplateString (line 4) | function normalizeTemplateString(quasis, ...expressions) {
function getTemplateElement (line 47) | function getTemplateElement(s = "") {
function isEmptyString (line 54) | function isEmptyString(s = "") {
FILE: packages/compiler/src/index.js
function configure (line 28) | function configure(newConfig) {
function compile (line 32) | async function compile(src, filename, config) {
function compileSync (line 39) | function compileSync(src, filename, config) {
function compileFile (line 46) | async function compileFile(filename, config) {
function compileFileSync (line 58) | function compileFileSync(filename, config) {
function getRuntimeEntryFiles (line 63) | function getRuntimeEntryFiles(output, requestedTranslator) {
function loadMarkoConfig (line 72) | function loadMarkoConfig(config) {
function loadBabelConfig (line 82) | async function loadBabelConfig(filename, config) {
function loadBabelConfigSync (line 89) | function loadBabelConfigSync(filename, config) {
function shouldResolveBabelConfig (line 96) | function shouldResolveBabelConfig(config) {
function getBaseBabelConfig (line 104) | function getBaseBabelConfig(filename, { babelConfig, ...markoConfig }) {
function buildResult (line 141) | function buildResult(src, filename, errorRecovery, babelResult) {
function _clearDefaults (line 164) | function _clearDefaults() {
function getFs (line 168) | function getFs(config) {
function isTranslatedOutput (line 172) | function isTranslatedOutput(output) {
FILE: packages/compiler/src/register.js
method retrieveSourceMap (line 12) | retrieveSourceMap(source) {
function register (line 29) | function register({ extensions = require.extensions, ...options } = {}) {
FILE: packages/compiler/src/taglib/finder/index.js
function reset (line 15) | function reset() {
function getModuleRootPackage (line 21) | function getModuleRootPackage(dirname) {
function getAllDependencyNames (line 29) | function getAllDependencyNames(pkg) {
function find (line 53) | function find(dirname, registeredTaglibs, tagDiscoveryDirs) {
function clearCache (line 158) | function clearCache() {
function excludeDir (line 162) | function excludeDir(dir) {
function excludePackage (line 166) | function excludePackage(name) {
function existsSync (line 170) | function existsSync(file) {
FILE: packages/compiler/src/taglib/index.js
function buildLookup (line 25) | function buildLookup(dirname, requestedTranslator, onError) {
function register (line 82) | function register(id, props) {
function clearCaches (line 89) | function clearCaches() {
function resolveOptionalTaglibs (line 95) | function resolveOptionalTaglibs(taglibIds, onError) {
function runAndCatchErrors (line 112) | function runAndCatchErrors(fn, onError) {
function loadTaglib (line 128) | function loadTaglib(id, props) {
function resolveTaglib (line 132) | function resolveTaglib(id) {
function hasRootDependency (line 149) | function hasRootDependency(id) {
FILE: packages/compiler/src/taglib/loader/Attribute.js
class Attribute (line 3) | class Attribute {
method constructor (line 4) | constructor(name) {
FILE: packages/compiler/src/taglib/loader/DependencyChain.js
class DependencyChain (line 3) | class DependencyChain {
method constructor (line 4) | constructor(array) {
method append (line 8) | append(str) {
method toString (line 12) | toString() {
FILE: packages/compiler/src/taglib/loader/Property.js
class Property (line 3) | class Property {
method constructor (line 4) | constructor() {
FILE: packages/compiler/src/taglib/loader/Tag.js
class Tag (line 6) | class Tag {
method constructor (line 7) | constructor(filePath) {
method addAttribute (line 19) | addAttribute(attr) {
method toString (line 36) | toString() {
method forEachAttribute (line 39) | forEachAttribute(callback, thisObj) {
method getAttribute (line 46) | getAttribute(attrName) {
method hasAttribute (line 66) | hasAttribute(attrName) {
method addNestedTag (line 70) | addNestedTag(nestedTag) {
method hasNestedTags (line 86) | hasNestedTags() {
method toJSON (line 90) | toJSON() {
method setTaglib (line 94) | setTaglib(taglib) {
FILE: packages/compiler/src/taglib/loader/Taglib.js
function handleImport (line 7) | function handleImport(taglib, importedTaglib) {
class Taglib (line 28) | class Taglib {
method constructor (line 29) | constructor(filePath, isFromPackageJson) {
method addAttribute (line 45) | addAttribute(attribute) {
method getAttribute (line 56) | getAttribute(name) {
method addTag (line 68) | addTag(tag) {
method addImport (line 77) | addImport(path) {
method toJSON (line 82) | toJSON() {
FILE: packages/compiler/src/taglib/loader/Transformer.js
class Transformer (line 4) | class Transformer {
method constructor (line 5) | constructor() {
method toString (line 13) | toString() {
FILE: packages/compiler/src/taglib/loader/cache.js
function get (line 3) | function get(key) {
function put (line 7) | function put(key, value) {
function clear (line 11) | function clear() {
FILE: packages/compiler/src/taglib/loader/index.js
function loadTaglibFromProps (line 7) | function loadTaglibFromProps(taglib, taglibProps) {
function loadTaglibFromFile (line 11) | function loadTaglibFromFile(filePath, isFromPackageJson) {
function loadTaglibFromDir (line 15) | function loadTaglibFromDir(filePath, tagDiscoveryDir) {
function clearCache (line 19) | function clearCache() {
function createTaglib (line 23) | function createTaglib(filePath) {
function loadTag (line 27) | function loadTag(tagProps, filePath) {
FILE: packages/compiler/src/taglib/loader/loadAttributeFromProps.js
class AttrLoader (line 10) | class AttrLoader {
method constructor (line 11) | constructor(attr, dependencyChain) {
method load (line 19) | load(attrProps) {
method type (line 49) | type(value) {
method targetProperty (line 62) | targetProperty(value) {
method defaultValue (line 71) | defaultValue(value) {
method pattern (line 83) | pattern(value) {
method allowExpressions (line 96) | allowExpressions(value) {
method preserveName (line 110) | preserveName(value) {
method required (line 121) | required(value) {
method removeDashes (line 129) | removeDashes(value) {
method description (line 136) | description(value) {
method setFlag (line 156) | setFlag(value) {
method setContextFlag (line 177) | setContextFlag(value) {
method ignore (line 186) | ignore(value) {
method autocomplete (line 193) | autocomplete(value) {
method enum (line 197) | enum(value) {
method deprecated (line 201) | deprecated(value) {
method name (line 205) | name(value) {
method html (line 209) | html(value) {
function loadAttributeFromProps (line 214) | function loadAttributeFromProps(attrName, attrProps, dependencyChain) {
FILE: packages/compiler/src/taglib/loader/loadTagFromFile.js
function loadTagFromFile (line 7) | function loadTagFromFile(filePath) {
FILE: packages/compiler/src/taglib/loader/loadTagFromProps.js
function resolveRelative (line 14) | function resolveRelative(dirname, value) {
function resolveWithMarkoExt (line 20) | function resolveWithMarkoExt(dirname, value) {
function removeDashes (line 38) | function removeDashes(str) {
function hasAttributes (line 44) | function hasAttributes(tagProps) {
function normalizeHook (line 58) | function normalizeHook(dirname, value) {
class TagLoader (line 80) | class TagLoader {
method constructor (line 81) | constructor(tag, dependencyChain) {
method load (line 89) | load(tagProps) {
method _handleVar (line 104) | _handleVar(value, dependencyChain) {
method "*" (line 148) | "*"(name, value) {
method name (line 308) | name(value) {
method renderer (line 321) | renderer(value) {
method template (line 330) | template(value) {
method types (line 350) | types(value) {
method attributes (line 366) | attributes(value) {
method migrator (line 379) | migrator(value) {
method migrate (line 386) | migrate(value) {
method codeGenerator (line 397) | codeGenerator(value) {
method translate (line 407) | translate(value) {
method nodeFactory (line 414) | nodeFactory(value) {
method parse (line 425) | parse(value) {
method transformer (line 432) | transformer(value) {
method transform (line 441) | transform(value) {
method analyze (line 454) | analyze(value) {
method type (line 461) | type(value) {
method isRepeated (line 466) | isRepeated(value) {
method targetProperty (line 471) | targetProperty(value) {
method nestedTags (line 490) | nestedTags(value) {
method openTagOnly (line 515) | openTagOnly(value) {
method description (line 522) | description(value) {
method autocomplete (line 526) | autocomplete(value) {
method parseOptions (line 530) | parseOptions(value) {
method deprecated (line 534) | deprecated(value) {
method attributeGroups (line 538) | attributeGroups(value) {
method html (line 548) | html(value) {
method htmlType (line 552) | htmlType(value) {
method featureFlags (line 556) | featureFlags(value) {
function isSupportedProperty (line 561) | function isSupportedProperty(name) {
function loadTagFromProps (line 565) | function loadTagFromProps(tag, tagProps, dependencyChain) {
FILE: packages/compiler/src/taglib/loader/loadTaglibFromDir.js
function loadFromDir (line 8) | function loadFromDir(dir, tagDiscoveryDir) {
FILE: packages/compiler/src/taglib/loader/loadTaglibFromFile.js
function loadFromFile (line 7) | function loadFromFile(filePath, isFromPackageJson) {
FILE: packages/compiler/src/taglib/loader/loadTaglibFromProps.js
function resolveRelative (line 16) | function resolveRelative(dirname, value) {
function normalizeHook (line 22) | function normalizeHook(dirname, value) {
class TaglibLoader (line 44) | class TaglibLoader {
method constructor (line 45) | constructor(taglib, dependencyChain) {
method load (line 58) | load(taglibProps) {
method _handleTag (line 92) | _handleTag(tagName, value, dependencyChain) {
method "*" (line 132) | "*"(name, value) {
method attributes (line 157) | attributes(value) {
method tags (line 187) | tags(tags) {
method scriptLang (line 213) | scriptLang(lang) {
method tagsDir (line 219) | tagsDir(dir) {
method exports (line 255) | exports(dir) {
method taglibImports (line 273) | taglibImports(imports) {
method migrator (line 329) | migrator(value) {
method migrate (line 336) | migrate(value) {
method translate (line 347) | translate(value) {
method taglibId (line 360) | taglibId(value) {
method transformer (line 368) | transformer(value) {
method transform (line 376) | transform(value) {
method attributeGroups (line 384) | attributeGroups(value) {
function loadTaglibFromProps (line 411) | function loadTaglibFromProps(taglib, taglibProps, dependencyChain) {
FILE: packages/compiler/src/taglib/loader/loaders.js
function isSupportedAttributeProperty (line 3) | function isSupportedAttributeProperty(propertyName) {
function isSupportedTagProperty (line 7) | function isSupportedTagProperty(propertyName) {
function createTaglib (line 11) | function createTaglib(taglibPath) {
FILE: packages/compiler/src/taglib/loader/property-handlers.js
function removeDashes (line 6) | function removeDashes(str) {
function error (line 13) | function error(message, cause) {
FILE: packages/compiler/src/taglib/loader/scanTagsDir.js
function createDefaultTagDef (line 36) | function createDefaultTagDef() {
function getFileMap (line 48) | function getFileMap(dirname) {
function getPath (line 65) | function getPath(filename, fileMap) {
function findAndSetFile (line 77) | function findAndSetFile(tagDef, tagDirname) {
function hasFile (line 102) | function hasFile(tagDef) {
FILE: packages/compiler/src/taglib/lookup/index.js
function TAG_COMPARATOR (line 9) | function TAG_COMPARATOR(a, b) {
function merge (line 13) | function merge(target, source) {
class TaglibLookup (line 47) | class TaglibLookup {
method constructor (line 48) | constructor() {
method hasTaglib (line 59) | hasTaglib(taglib) {
method _mergeNestedTags (line 63) | _mergeNestedTags(taglib) {
method addTaglib (line 94) | addTaglib(taglib) {
method getTagsSorted (line 128) | getTagsSorted() {
method forEachAttribute (line 143) | forEachAttribute(tagName, callback) {
method getTag (line 197) | getTag(element) {
method getAttribute (line 206) | getAttribute(element, attr) {
method toString (line 286) | toString() {
FILE: packages/compiler/src/util/build-code-frame.js
class CompileError (line 9) | class CompileError extends Error {
method constructor (line 10) | constructor(filename, code, loc, label) {
method toJSON (line 69) | toJSON() {
method toString (line 73) | toString() {
function buildCodeFrameError (line 78) | function buildCodeFrameError(filename, code, loc, label) {
function buildMessage (line 82) | function buildMessage(code, loc, message) {
function buildFileName (line 104) | function buildFileName(filename, loc) {
function noop (line 112) | function noop() {}
FILE: packages/compiler/src/util/merge-errors.js
function throwAggregateError (line 6) | function throwAggregateError(errors) {
class CompileErrors (line 17) | class CompileErrors extends Error {
method constructor (line 18) | constructor(errors) {
method toJSON (line 35) | toJSON() {
method toString (line 39) | toString() {
FILE: packages/compiler/src/util/quick-hash.js
class Hash (line 4) | class Hash {
method update (line 8) | update(s) {
method digest (line 25) | digest() {
FILE: packages/compiler/src/util/should-optimize.js
function shouldOptimize (line 1) | function shouldOptimize() {
FILE: packages/compiler/src/util/strip-ansi.js
function stripAnsi (line 5) | function stripAnsi(str) {
FILE: packages/runtime-class/bin/markoc.js
function relPath (line 117) | function relPath(path) {
function isIgnored (line 171) | function isIgnored(path, dir, stat) {
function walk (line 209) | function walk(files, options, done) {
FILE: packages/runtime-class/index.d.ts
type ReadableStream (line 10) | interface ReadableStream {}
type Global (line 15) | interface Global {
type TemplateInput (line 33) | type TemplateInput<Input> = Input & {
type RenderedTemplate (line 38) | type RenderedTemplate<Component = unknown> = Promise<
type MountedTemplate (line 52) | type MountedTemplate<Input = unknown, Return = unknown> = {
type Out (line 63) | interface Out<
type Body (line 111) | interface Body<
type Renderable (line 117) | type Renderable =
type BodyReturnType (line 124) | type BodyReturnType<B> =
type BodyParameters (line 128) | type BodyParameters<B> =
class Component (line 131) | class Component<
type RenderResult (line 299) | interface RenderResult<
type Emitter (line 334) | interface Emitter {
type AttrTag (line 350) | type AttrTag<T> = T & {
type NativeTag (line 354) | interface NativeTag<
type NativeTags (line 361) | interface NativeTags {
type Input (line 365) | type Input<Name> = 0 extends 1 & Name
type Return (line 387) | type Return<Name> = 0 extends 1 & Name
type RepeatableAttrTag (line 401) | type RepeatableAttrTag<T> = AttrTag<T>;
type NativeTagInput (line 404) | type NativeTagInput<Name extends keyof NativeTags> =
type NativeTagReturn (line 407) | type NativeTagReturn<Name extends keyof NativeTags> =
FILE: packages/runtime-class/src/compiler/index.js
function configure (line 39) | function configure(newConfig) {
function resultCompat (line 50) | function resultCompat({ code, meta, map }, options = {}) {
function _compile (line 58) | function _compile(src, filename, userConfig, callback) {
function compile (line 79) | function compile(src, filename, options, callback) {
function compileForBrowser (line 91) | function compileForBrowser(src, filename, options, callback) {
function compileFile (line 109) | function compileFile(filename, options, callback) {
function compileFileForBrowser (line 132) | function compileFileForBrowser(filename, options, callback) {
FILE: packages/runtime-class/src/core-tags/components/init-components-tag.js
constant INIT_COMPONENTS_KEY (line 3) | const INIT_COMPONENTS_KEY = Symbol();
function addComponentsFromOut (line 10) | function addComponentsFromOut(source, target) {
function addInitScript (line 18) | function addInitScript(writer) {
FILE: packages/runtime-class/src/core-tags/components/preferred-script-location-tag.js
function forceScriptTagAtThisPoint (line 3) | function forceScriptTagAtThisPoint(out) {
FILE: packages/runtime-class/src/core-tags/core/await/AsyncValue.js
function AsyncValue (line 3) | function AsyncValue() {
function notifyCallbacks (line 27) | function notifyCallbacks(asyncValue, err, value) {
FILE: packages/runtime-class/src/core-tags/core/await/client-reorder-runtime.js
function $af (line 1) | function $af(
FILE: packages/runtime-class/src/core-tags/core/await/renderer.js
function safeRenderBody (line 7) | function safeRenderBody(renderBody, targetOut, data) {
function requestData (line 15) | function requestData(provider, timeout) {
constant LAST_OPTIONS (line 82) | const LAST_OPTIONS = { last: true, name: "await:finish" };
function renderBody (line 182) | function renderBody(err, data) {
function renderContents (line 228) | function renderContents(err, data, input, out) {
FILE: packages/runtime-class/src/core-tags/core/await/reorderer-renderer.js
function handleAwait (line 51) | function handleAwait(awaitInfo) {
FILE: packages/runtime-class/src/node-require/hot-reload.js
function tryReload (line 31) | function tryReload(filename) {
function cwdRelative (line 43) | function cwdRelative(filename) {
FILE: packages/runtime-class/src/node-require/index.js
constant MARKO_EXTENSIONS (line 17) | const MARKO_EXTENSIONS = Symbol("MARKO_EXTENSIONS");
function normalizeExtension (line 26) | function normalizeExtension(extension) {
function compile (line 33) | function compile(templatePath, markoCompiler, userCompilerOptions) {
function install (line 45) | function install(options) {
FILE: packages/runtime-class/src/node_modules/@internal/components-define-widget-legacy/index-browser.js
function noop (line 20) | function noop() {}
function Component (line 51) | function Component(id, doc) {
function modernMountOrUpdate (line 193) | function modernMountOrUpdate() {
function legacyRender (line 243) | function legacyRender() {
function modernOnDestroy (line 251) | function modernOnDestroy() {
function State (line 263) | function State() {
FILE: packages/runtime-class/src/node_modules/@internal/components-entry/index.js
function safeJSONReplacer (line 16) | function safeJSONReplacer(match) {
function isNotEmpty (line 24) | function isNotEmpty(obj) {
function safeStringify (line 34) | function safeStringify(data) {
function getSerializedGlobals (line 41) | function getSerializedGlobals($global) {
function addComponentsFromContext (line 63) | function addComponentsFromContext(componentsContext, componentsToHydrate) {
function getInitComponentsData (line 186) | function getInitComponentsData($global, componentDefs) {
function getInitComponentsDataFromOut (line 240) | function getInitComponentsDataFromOut(out) {
function writeInitComponentsCode (line 263) | function writeInitComponentsCode(out) {
function getInitComponentsCodeFromData (line 280) | function getInitComponentsCodeFromData($global, initComponentsData) {
FILE: packages/runtime-class/src/node_modules/@internal/components-registry/index-browser.js
function register (line 36) | function register(type, def) {
function addPendingDef (line 57) | function addPendingDef(def, type, meta, host, runtimeId) {
function load (line 69) | function load(typeName, isLegacy) {
function getComponentClass (line 98) | function getComponentClass(typeName, isLegacy) {
function createComponent (line 146) | function createComponent(typeName, id, isLegacy) {
function indexServerComponentBoundaries (line 151) | function indexServerComponentBoundaries(node, runtimeId, stack) {
function invokeComponentEventHandler (line 247) | function invokeComponentEventHandler(component, targetMethodName, args) {
function addEventListenerHelper (line 256) | function addEventListenerHelper(el, eventType, isOnce, listener) {
function addDOMEventListeners (line 272) | function addDOMEventListeners(
function initComponent (line 297) | function initComponent(componentDef, host) {
function initClientRendered (line 358) | function initClientRendered(componentDefs, host) {
function initServerRendered (line 382) | function initServerRendered(renderedComponents, host) {
function tryHydrateComponent (line 508) | function tryHydrateComponent(rawDef, meta, host, runtimeId) {
function hydrateComponentAndGetMount (line 541) | function hydrateComponentAndGetMount(componentDef, host) {
function trackComponent (line 570) | function trackComponent(componentDef) {
function tryInvoke (line 577) | function tryInvoke(fn) {
FILE: packages/runtime-class/src/node_modules/@internal/components-registry/index.js
function createServerComponentClass (line 6) | function createServerComponentClass(renderingLogic) {
function createComponent (line 18) | function createComponent(
FILE: packages/runtime-class/src/node_modules/@internal/components-util/index-browser.js
function getComponentForEl (line 13) | function getComponentForEl(el, host) {
function destroyComponentForNode (line 41) | function destroyComponentForNode(node) {
function destroyNodeRecursive (line 48) | function destroyNodeRecursive(node, component) {
function nextComponentId (line 73) | function nextComponentId() {
function nextComponentIdProvider (line 81) | function nextComponentIdProvider() {
function attachBubblingEvent (line 85) | function attachBubblingEvent(
function getMarkoPropsFromEl (line 101) | function getMarkoPropsFromEl(el) {
function normalizeComponentKey (line 121) | function normalizeComponentKey(key, parentId) {
function addComponentRootToKeyedElements (line 128) | function addComponentRootToKeyedElements(
FILE: packages/runtime-class/src/node_modules/@internal/components-util/index.js
function nextComponentIdProvider (line 6) | function nextComponentIdProvider(out) {
function attachBubblingEvent (line 15) | function attachBubblingEvent(
FILE: packages/runtime-class/src/node_modules/@internal/create-readable/index.js
class Readable (line 17) | class Readable extends stream.Readable {
method constructor (line 18) | constructor(template, data) {
method write (line 25) | write(data) {
method end (line 31) | end() {
method _read (line 35) | _read() {
FILE: packages/runtime-class/src/node_modules/@internal/loader/fallback-node.js
function loadSource (line 32) | function loadSource(templatePath, compiledSrc) {
function getCachedTemplate (line 52) | function getCachedTemplate(templatePath) {
function doLoad (line 64) | function doLoad(templatePath, templateSrc, options) {
FILE: packages/runtime-class/src/node_modules/@internal/require/index-browser.js
function load (line 5) | function load(id) {
function exists (line 9) | function exists() {
function interopRequire (line 13) | function interopRequire(mod) {
FILE: packages/runtime-class/src/node_modules/@internal/require/index-legacy-browser.js
function load (line 5) | function load(id) {
function exists (line 9) | function exists(id) {
function interopRequire (line 18) | function interopRequire(mod) {
FILE: packages/runtime-class/src/node_modules/@internal/require/index-webpack.js
function load (line 5) | function load(id) {
function exists (line 10) | function exists() {
function interopRequire (line 14) | function interopRequire(mod) {
FILE: packages/runtime-class/src/node_modules/@internal/require/index.js
function load (line 5) | function load(id) {
function exists (line 9) | function exists() {
function interopRequire (line 13) | function interopRequire(mod) {
FILE: packages/runtime-class/src/node_modules/@internal/set-immediate/index-worker.js
function noop (line 4) | function noop() {}
function queueMicrotaskInternal (line 20) | function queueMicrotaskInternal(cb) {
FILE: packages/runtime-class/src/runtime/RenderResult.js
function getRootNode (line 5) | function getRootNode(el) {
function getComponentDefs (line 11) | function getComponentDefs(result) {
function RenderResult (line 20) | function RenderResult(out) {
FILE: packages/runtime-class/src/runtime/components/Component.js
function removeListener (line 34) | function removeListener(removeEventListenerHandle) {
function walkFragments (line 38) | function walkFragments(fragment) {
function handleCustomEventWithMethodListener (line 54) | function handleCustomEventWithMethodListener(
function resolveKeyHelper (line 79) | function resolveKeyHelper(key, index) {
function resolveComponentIdHelper (line 83) | function resolveComponentIdHelper(component, key, index) {
function processUpdateHandlers (line 94) | function processUpdateHandlers(component, stateChanges, oldState) {
function checkInputChanged (line 136) | function checkInputChanged(existingComponent, oldInput, newInput) {
function Component (line 167) | function Component(id) {
method state (line 351) | get state() {
method state (line 354) | set state(newState) {
method input (line 412) | get input() {
method input (line 415) | set input(newInput) {
method ___isDirty (line 493) | get ___isDirty() {
method ___rawState (line 573) | get ___rawState() {
method el (line 594) | get el() {
method els (line 598) | get els() {
method ___emitCreate (line 613) | ___emitCreate(input, out) {
method ___emitRender (line 618) | ___emitRender(out) {
method ___emitUpdate (line 623) | ___emitUpdate() {
method ___emitMount (line 628) | ___emitMount() {
method ___emitDestroy (line 633) | ___emitDestroy() {
FILE: packages/runtime-class/src/runtime/components/ComponentDef.js
function ComponentDef (line 23) | function ComponentDef(component, componentId, componentsContext) {
method ___type (line 85) | get ___type() {
FILE: packages/runtime-class/src/runtime/components/ComponentsContext.js
function ComponentsContext (line 4) | function ComponentsContext(out, parentComponentsContext) {
function getComponentsContext (line 53) | function getComponentsContext(out) {
FILE: packages/runtime-class/src/runtime/components/GlobalComponentsContext.js
function GlobalComponentsContext (line 4) | function GlobalComponentsContext(out) {
FILE: packages/runtime-class/src/runtime/components/KeySequence.js
function KeySequence (line 1) | function KeySequence() {
FILE: packages/runtime-class/src/runtime/components/ServerComponent.js
class ServerComponent (line 5) | class ServerComponent {
method constructor (line 6) | constructor(id, input, out, typeName, customEvents, scope) {
method input (line 22) | set input(newInput) {
method input (line 26) | get input() {
method state (line 30) | set state(newState) {
method state (line 34) | get state() {
method ___rawState (line 38) | get ___rawState() {
method elId (line 42) | elId(nestedId) {
method onCreate (line 66) | onCreate() {}
method onInput (line 67) | onInput() {}
method onRender (line 68) | onRender() {}
method isDestroyed (line 70) | isDestroyed() {
method setState (line 74) | setState(name, value) {
method setStateDirty (line 86) | setStateDirty(name, value) {
method replaceState (line 98) | replaceState(newState) {
method subscribeTo (line 102) | subscribeTo() {
method emit (line 106) | emit() {
method getEl (line 110) | getEl() {
method getEls (line 114) | getEls() {
method getComponent (line 118) | getComponent() {
method getComponents (line 122) | getComponents() {
method forceUpdate (line 126) | forceUpdate() {
method update (line 130) | update() {
function notImplemented (line 139) | function notImplemented(name) {
FILE: packages/runtime-class/src/runtime/components/State.js
function ensure (line 3) | function ensure(state, propertyName) {
function State (line 17) | function State(component) {
FILE: packages/runtime-class/src/runtime/components/attach-detach.js
function handleNodeAttach (line 9) | function handleNodeAttach(node, componentsContext) {
function handleNodeDetach (line 35) | function handleNodeDetach(node) {
FILE: packages/runtime-class/src/runtime/components/defineComponent.js
function Component (line 33) | function Component(id) {
function State (line 52) | function State(component) {
FILE: packages/runtime-class/src/runtime/components/event-delegation.js
function getEventFromEl (line 13) | function getEventFromEl(el, eventName) {
function delegateEvent (line 30) | function delegateEvent(node, eventName, target, event) {
function addDelegatedEventHandler (line 69) | function addDelegatedEventHandler(eventType) {
function addDelegatedEventHandlerToHost (line 75) | function addDelegatedEventHandlerToHost(eventType, host) {
function noop (line 133) | function noop() {}
FILE: packages/runtime-class/src/runtime/components/legacy/defineRenderer-legacy.js
function clone (line 161) | function clone(src) {
FILE: packages/runtime-class/src/runtime/components/legacy/dependencies/index.js
function getRootDeps (line 6) | function getRootDeps(template, context) {
function attachDepsAndComponentsToTemplate (line 31) | function attachDepsAndComponentsToTemplate(target, context) {
function getInitModule (line 92) | function getInitModule(path, components) {
function resolveDep (line 133) | function resolveDep(dep, root, context) {
function parseDependencyString (line 159) | function parseDependencyString(string) {
function patch (line 167) | function patch(Template) {
FILE: packages/runtime-class/src/runtime/components/legacy/ready.js
function domReadyCallback (line 30) | function domReadyCallback() {
function bindReady (line 38) | function bindReady(doc) {
function ready (line 127) | function ready(callback, thisObj, doc) {
FILE: packages/runtime-class/src/runtime/components/legacy/renderer-legacy.js
function createRendererFunc (line 14) | function createRendererFunc(templateRenderFunc, componentProps) {
FILE: packages/runtime-class/src/runtime/components/renderer.js
function resolveComponentKey (line 14) | function resolveComponentKey(key, parentComponentDef) {
function trackAsyncComponents (line 22) | function trackAsyncComponents(out) {
function handleBeginAsync (line 32) | function handleBeginAsync(event) {
function handleBeginDetachedAsync (line 49) | function handleBeginDetachedAsync(event) {
function createRendererFunc (line 56) | function createRendererFunc(
FILE: packages/runtime-class/src/runtime/components/update-manager.js
function updateUnbatchedComponents (line 13) | function updateUnbatchedComponents() {
function scheduleUpdates (line 26) | function scheduleUpdates() {
function updateComponents (line 38) | function updateComponents(queue) {
function batchUpdate (line 51) | function batchUpdate(func) {
function queueComponentUpdate (line 75) | function queueComponentUpdate(component) {
FILE: packages/runtime-class/src/runtime/createOut.js
function setCreateOut (line 3) | function setCreateOut(createOutFunc) {
function createOut (line 7) | function createOut(globalData) {
FILE: packages/runtime-class/src/runtime/dom-insert.js
function resolveEl (line 11) | function resolveEl(el) {
function beforeRemove (line 22) | function beforeRemove(referenceEl) {
FILE: packages/runtime-class/src/runtime/helpers/_change-case.js
function matchToUpperCase (line 43) | function matchToUpperCase(_, char) {
FILE: packages/runtime-class/src/runtime/helpers/dynamic-tag.js
function attrsToCamelCase (line 150) | function attrsToCamelCase(attrs) {
function addEvents (line 160) | function addEvents(componentDef, customEvents, props) {
FILE: packages/runtime-class/src/runtime/helpers/tags-compat/runtime-dom.js
function create5to6Renderer (line 104) | function create5to6Renderer(renderer) {
function renderAndMorph (line 135) | function renderAndMorph(scope, renderer, renderBody, input) {
function getRootNode (line 190) | function getRootNode(el) {
FILE: packages/runtime-class/src/runtime/helpers/tags-compat/runtime-html.js
function concatScripts (line 236) | function concatScripts(a, b) {
FILE: packages/runtime-class/src/runtime/html/AsyncStream.js
function noop (line 15) | function noop() {}
function State (line 30) | function State(root, stream, writer, events) {
function escapeEndingComment (line 39) | function escapeEndingComment(text) {
function deferred (line 43) | function deferred() {
function AsyncStream (line 53) | function AsyncStream(global, writer, parentOut) {
method [Symbol.asyncIterator] (line 131) | [Symbol.asyncIterator]() {
method toReadable (line 235) | toReadable() {
function getNonMarkoStack (line 817) | function getNonMarkoStack(error) {
function iteratorReturnFn (line 826) | function iteratorReturnFn(value) {
FILE: packages/runtime-class/src/runtime/html/BufferedWriter.js
function BufferedWriter (line 14) | function BufferedWriter(wrappedStream) {
method scheduleFlush (line 22) | scheduleFlush() {
function flush (line 38) | function flush(writer) {
FILE: packages/runtime-class/src/runtime/html/StringWriter.js
function StringWriter (line 5) | function StringWriter() {
FILE: packages/runtime-class/src/runtime/html/helpers/_dynamic-attr.js
function isInvalidAttrName (line 27) | function isInvalidAttrName(name) {
FILE: packages/runtime-class/src/runtime/html/helpers/attr.js
function attr (line 14) | function attr(name, value) {
function nonVoidAttr (line 18) | function nonVoidAttr(name, value) {
function isVoid (line 53) | function isVoid(value) {
function attrAssignment (line 60) | function attrAssignment(value) {
function escapeSingleQuotedAttrValue (line 71) | function escapeSingleQuotedAttrValue(value) {
function replaceUnsafeSingleQuoteAttrChar (line 80) | function replaceUnsafeSingleQuoteAttrChar(match) {
function escapeDoubleQuotedAttrValue (line 84) | function escapeDoubleQuotedAttrValue(value) {
function replaceUnsafeDoubleQuoteAttrChar (line 93) | function replaceUnsafeDoubleQuoteAttrChar(match) {
FILE: packages/runtime-class/src/runtime/html/hot-reload.js
function proxyRenderFn (line 23) | function proxyRenderFn() {
FILE: packages/runtime-class/src/runtime/html/index.js
function Template (line 15) | function Template(typeName) {
FILE: packages/runtime-class/src/runtime/renderable.js
function safeRender (line 7) | function safeRender(renderFunc, finalData, finalOut, shouldEnd) {
method update (line 118) | update(input) {
method destroy (line 122) | destroy() {
FILE: packages/runtime-class/src/runtime/vdom/AsyncVDOMBuilder.js
function State (line 17) | function State(tree) {
function AsyncVDOMBuilder (line 23) | function AsyncVDOMBuilder(globalData, parentNode, parentOut) {
function next (line 245) | function next() {
FILE: packages/runtime-class/src/runtime/vdom/VComment.js
function VComment (line 4) | function VComment(value, ownerComponent) {
FILE: packages/runtime-class/src/runtime/vdom/VComponent.js
function VComponent (line 4) | function VComponent(component, key, ownerComponent, preserve) {
FILE: packages/runtime-class/src/runtime/vdom/VDocumentFragment.js
function VDocumentFragmentClone (line 5) | function VDocumentFragmentClone(other) {
function VDocumentFragment (line 11) | function VDocumentFragment(out) {
FILE: packages/runtime-class/src/runtime/vdom/VElement.js
function normalizeValue (line 43) | function normalizeValue(value) {
function assign (line 75) | function assign(a, b) {
function VElementClone (line 83) | function VElementClone(other) {
function VElement (line 97) | function VElement(
function virtualizeElement (line 213) | function virtualizeElement(node, virtualizeChildNodes, ownerComponent) {
FILE: packages/runtime-class/src/runtime/vdom/VFragment.js
function VFragment (line 8) | function VFragment(key, ownerComponent, preserve) {
FILE: packages/runtime-class/src/runtime/vdom/VNode.js
function VNode (line 3) | function VNode() {}
method ___firstChild (line 16) | get ___firstChild() {
method ___nextSibling (line 31) | get ___nextSibling() {
FILE: packages/runtime-class/src/runtime/vdom/VText.js
function VText (line 4) | function VText(value, ownerComponent) {
FILE: packages/runtime-class/src/runtime/vdom/helpers/attrs.js
function parseAttrs (line 47) | function parseAttrs(str) {
FILE: packages/runtime-class/src/runtime/vdom/helpers/const-element.js
function ConstVElement (line 10) | function ConstVElement(tagName, attrs, childCount) {
FILE: packages/runtime-class/src/runtime/vdom/hot-reload.js
function proxyRenderer (line 69) | function proxyRenderer() {
function hasLifecycleChanged (line 90) | function hasLifecycleChanged(oldProto, newProto) {
function batchUpdate (line 106) | function batchUpdate() {
FILE: packages/runtime-class/src/runtime/vdom/index.js
function Template (line 15) | function Template(typeName) {
FILE: packages/runtime-class/src/runtime/vdom/morphdom/fragment.js
method firstChild (line 6) | get firstChild() {
method lastChild (line 10) | get lastChild() {
method parentNode (line 14) | get parentNode() {
method namespaceURI (line 18) | get namespaceURI() {
method nextSibling (line 21) | get nextSibling() {
method nodes (line 24) | get nodes() {
function createFragmentNode (line 61) | function createFragmentNode(startNode, nextNode, parentNode) {
function beginFragmentNode (line 81) | function beginFragmentNode(startNode, parentNode) {
FILE: packages/runtime-class/src/runtime/vdom/morphdom/helpers.js
function insertBefore (line 1) | function insertBefore(node, referenceNode, parentNode) {
function insertAfter (line 11) | function insertAfter(node, referenceNode, parentNode) {
function nextSibling (line 19) | function nextSibling(node) {
function firstChild (line 28) | function firstChild(node) {
function removeChild (line 33) | function removeChild(node) {
FILE: packages/runtime-class/src/runtime/vdom/morphdom/index.js
function isAutoKey (line 41) | function isAutoKey(key) {
function compareNodeNames (line 45) | function compareNodeNames(fromEl, toEl) {
function caseInsensitiveCompare (line 49) | function caseInsensitiveCompare(a, b) {
function onNodeAdded (line 53) | function onNodeAdded(node, componentsContext) {
function morphdom (line 59) | function morphdom(fromNode, toNode, host, componentsContext) {
FILE: packages/runtime-class/src/runtime/vdom/vdom.js
function virtualizeChildNodes (line 12) | function virtualizeChildNodes(node, vdomParent, ownerComponent) {
function virtualize (line 20) | function virtualize(node, ownerComponent) {
function virtualizeHTML (line 35) | function virtualizeHTML(html, ownerComponent) {
FILE: packages/runtime-class/src/taglib/index.js
function clearCache (line 7) | function clearCache() {
function register (line 11) | function register(taglibProps, taglibPath) {
function registerFromFile (line 15) | function registerFromFile(taglibPath) {
method registerTaglib (line 44) | registerTaglib(taglib) {
FILE: packages/runtime-class/src/translator/index.js
method enter (line 41) | enter(program) {
method exit (line 52) | exit(program) {
method MarkoTag (line 92) | MarkoTag(tag) {
method exit (line 196) | exit(path) {
method ReferencedIdentifier (line 222) | ReferencedIdentifier(path) {
method enter (line 228) | enter(path) {
method exit (line 278) | exit(path) {
function getRuntimeEntryFiles (line 556) | function getRuntimeEntryFiles(output, optimize) {
function isRenderContent (line 608) | function isRenderContent({ node }) {
function resolveRelativeTagEntry (line 612) | function resolveRelativeTagEntry(file, tagDef) {
FILE: packages/runtime-class/src/translator/placeholder/index[html].js
constant ESCAPE_TYPES (line 16) | const ESCAPE_TYPES = {
function findParentTagName (line 82) | function findParentTagName(path) {
FILE: packages/runtime-class/src/translator/scriptlet.js
function replaceWithUndefinedIdentifiers (line 23) | function replaceWithUndefinedIdentifiers(path) {
FILE: packages/runtime-class/src/translator/tag/attribute-tag.js
function analyzeAttributeTags (line 22) | function analyzeAttributeTags(rootTag) {
function translateAttributeTag (line 105) | function translateAttributeTag(tag) {
function getAttrTagObject (line 133) | function getAttrTagObject(tag) {
function removeDashes (line 143) | function removeDashes(str) {
function matchToUpperCase (line 147) | function matchToUpperCase(_match, lower) {
FILE: packages/runtime-class/src/translator/tag/attribute/directives/class.js
method exit (line 12) | exit(tag, _, value) {
FILE: packages/runtime-class/src/translator/tag/attribute/directives/no-update-body-if.js
method enter (line 6) | enter(tag) {
method exit (line 9) | exit(tag, attr, value) {
FILE: packages/runtime-class/src/translator/tag/attribute/directives/no-update-body.js
method enter (line 4) | enter(tag) {
method exit (line 7) | exit(tag, attr, value) {
FILE: packages/runtime-class/src/translator/tag/attribute/directives/no-update-if.js
method enter (line 6) | enter(tag) {
method exit (line 9) | exit(tag, attr, value) {
FILE: packages/runtime-class/src/translator/tag/attribute/directives/no-update.js
constant EMPTY_OBJECT (line 6) | const EMPTY_OBJECT = {};
method enter (line 9) | enter(tag) {
method exit (line 12) | exit(tag, attr, _, opts = EMPTY_OBJECT) {
FILE: packages/runtime-class/src/translator/tag/attribute/directives/style.js
method exit (line 12) | exit(tag, _, value) {
FILE: packages/runtime-class/src/translator/tag/attribute/index.js
constant EMPTY_ARRAY (line 10) | const EMPTY_ARRAY = [];
constant EVENT_REG (line 11) | const EVENT_REG = /^(on(?:ce)?)(-)?(.*)$/;
method enter (line 15) | enter(attr) {
method exit (line 85) | exit(attr) {
function execModifiersAndDirectives (line 120) | function execModifiersAndDirectives(type, tag, attr, value) {
FILE: packages/runtime-class/src/translator/tag/attribute/modifiers/no-update.js
method exit (line 5) | exit(tag, attr) {
FILE: packages/runtime-class/src/translator/tag/attribute/modifiers/scoped.js
method exit (line 8) | exit(tag, _, value) {
FILE: packages/runtime-class/src/translator/tag/index.js
method enter (line 26) | enter(path) {
method exit (line 91) | exit(path) {
constant HANDLE_BINDINGS (line 159) | const HANDLE_BINDINGS = ["module", "var", "let", "const"];
function findDynamicTagTypes (line 160) | function findDynamicTagTypes(root) {
function isMarkoFile (line 281) | function isMarkoFile(request) {
function moveIgnoredAttrTags (line 285) | function moveIgnoredAttrTags(parentTag) {
FILE: packages/runtime-class/src/translator/tag/native-tag[html]/index.js
constant EMPTY_OBJECT (line 15) | const EMPTY_OBJECT = {};
function isPreserved (line 226) | function isPreserved(path) {
FILE: packages/runtime-class/src/translator/tag/native-tag[vdom]/index.js
constant SIMPLE_ATTRS (line 12) | const SIMPLE_ATTRS = ["id", "class", "style"];
function isPropertyName (line 99) | function isPropertyName({ key }, names) {
function tagArguments (line 107) | function tagArguments(path) {
FILE: packages/runtime-class/src/translator/tag/util.js
function getAttrs (line 12) | function getAttrs(path, preserveNames, isAttrTag) {
function buildEventHandlerArray (line 159) | function buildEventHandlerArray(path) {
function evaluateAttr (line 184) | function evaluateAttr(attr) {
function camelCase (line 224) | function camelCase(string) {
function findLastIndex (line 228) | function findLastIndex(arr, check) {
function mergeSpread (line 238) | function mergeSpread(properties, value) {
function findRootTag (line 252) | function findRootTag(tag) {
FILE: packages/runtime-class/src/translator/taglib/core/conditional/translate-else-if.js
function exit (line 5) | function exit(path) {
FILE: packages/runtime-class/src/translator/taglib/core/conditional/translate-else.js
function exit (line 4) | function exit(path) {
FILE: packages/runtime-class/src/translator/taglib/core/conditional/translate-if.js
function exit (line 5) | function exit(path) {
FILE: packages/runtime-class/src/translator/taglib/core/conditional/util.js
function buildIfStatement (line 5) | function buildIfStatement(path, args) {
FILE: packages/runtime-class/src/translator/taglib/core/macro/translate.js
function exit (line 9) | function exit(path) {
FILE: packages/runtime-class/src/translator/taglib/core/migrate.js
method AssignmentExpression (line 8) | AssignmentExpression(path, state) {
method ReferencedIdentifier (line 30) | ReferencedIdentifier(path, state) {
FILE: packages/runtime-class/src/translator/taglib/core/parse-class.js
method fix (line 71) | fix() {
FILE: packages/runtime-class/src/translator/taglib/core/transform-style.js
constant STYLE_REG (line 6) | const STYLE_REG = /^style((?:\.[^.\s\\/:*?"<>|({]+)+)?\s*\{/;
FILE: packages/runtime-class/src/translator/taglib/core/translate-await.js
function enter (line 3) | function enter(path) {
FILE: packages/runtime-class/src/translator/taglib/core/translate-for.js
function exit (line 7) | function exit(path) {
function findName (line 154) | function findName(arr, value) {
FILE: packages/runtime-class/src/translator/taglib/core/translate-html-comment.js
function enter (line 12) | function enter(path) {
FILE: packages/runtime-class/src/translator/taglib/core/translate-include-content.js
function enter (line 8) | function enter(tag) {
FILE: packages/runtime-class/src/translator/taglib/core/translate-server-only.js
function enter (line 1) | function enter(path) {
FILE: packages/runtime-class/src/translator/taglib/core/translate-while.js
function exit (line 10) | function exit(path) {
FILE: packages/runtime-class/src/translator/util/add-dependencies.js
method build (line 46) | build(entryFile, exportInit) {
method visit (line 100) | visit(file, entryFile, visitChild) {
function addBrowserImports (line 202) | function addBrowserImports(seenImports, lassoDeps, body, file, entryFile) {
function addImport (line 252) | function addImport(seenImports, body, resolved) {
function resolveRelativeToEntry (line 258) | function resolveRelativeToEntry(entryFile, file, req) {
function importPath (line 267) | function importPath(path) {
function tryGetTemplateImports (line 271) | function tryGetTemplateImports(file, rendererRelativePath) {
function tryResolveFrom (line 332) | function tryResolveFrom(request, from) {
function toTestFn (line 340) | function toTestFn(val) {
function isLassoDep (line 348) | function isLassoDep(dep) {
function resolveLassoManifestDepRelativeToEntry (line 358) | function resolveLassoManifestDepRelativeToEntry(entryFile, targetFile, d...
FILE: packages/runtime-class/src/translator/util/escape-regexp.js
function escapeRegExp (line 2) | function escapeRegExp(str) {
FILE: packages/runtime-class/src/translator/util/get-component-files.js
constant COMPONENT_FILES_KEY (line 5) | const COMPONENT_FILES_KEY = "___marko_component_files___";
function getComponentFiles (line 7) | function getComponentFiles({ hub: { file } }) {
function getBase (line 64) | function getBase(filename) {
FILE: packages/runtime-class/src/translator/util/html-out-write.js
function write (line 4) | function write(strings, ...expressions) {
FILE: packages/runtime-class/src/translator/util/key-manager.js
function getKeyManager (line 12) | function getKeyManager(path) {
function hasAutoKey (line 20) | function hasAutoKey(path) {
function hasUserKey (line 25) | function hasUserKey(path) {
class KeyManager (line 29) | class KeyManager {
method constructor (line 30) | constructor() {
method nextKey (line 34) | nextKey() {
method resolveKey (line 40) | resolveKey(path) {
function getParentKeyScope (line 82) | function getParentKeyScope(path) {
function getKeyScope (line 87) | function getKeyScope(path) {
function getUserKey (line 153) | function getUserKey(path) {
FILE: packages/runtime-class/src/translator/util/optimize-html-writes.js
method ExpressionStatement (line 4) | ExpressionStatement(path) {
function optimizeHTMLWrites (line 28) | function optimizeHTMLWrites(path) {
function getOutContent (line 40) | function getOutContent(path) {
FILE: packages/runtime-class/src/translator/util/optimize-vdom-create.js
method MarkoText (line 26) | MarkoText(path, state) {
method MarkoPlaceholder (line 33) | MarkoPlaceholder(path, state) {
method MarkoTag (line 44) | MarkoTag(path, state) {
method MarkoText (line 54) | MarkoText(path) {
method MarkoPlaceholder (line 57) | MarkoPlaceholder(path) {
method enter (line 66) | enter(path) {
method exit (line 70) | exit(path) {
function optimizeStaticVDOM (line 116) | function optimizeStaticVDOM(path) {
function analyzeStaticVDOM (line 151) | function analyzeStaticVDOM(path) {
function shouldRun (line 157) | function shouldRun(markoOpts) {
function getConstElementArgs (line 161) | function getConstElementArgs(path) {
FILE: packages/runtime-class/src/translator/util/plugin-hooks.js
function enter (line 3) | function enter(plugin, ...args) {
function exit (line 15) | function exit(plugin, ...args) {
FILE: packages/runtime-class/src/translator/util/runtime-flags.js
constant HAS_SIMPLE_ATTRS (line 1) | const HAS_SIMPLE_ATTRS = 1;
constant IS_CUSTOM_ELEMENT (line 2) | const IS_CUSTOM_ELEMENT = 2;
constant SPREAD_ATTRS (line 3) | const SPREAD_ATTRS = 4;
FILE: packages/runtime-class/src/translator/util/vdom-out-write.js
function write (line 3) | function write(method, ...args) {
FILE: packages/runtime-class/src/translator/util/with-previous-location.js
function withPreviousLocation (line 1) | function withPreviousLocation(newNode, originalNode) {
FILE: packages/runtime-class/tags-html.d.ts
type NativeTags (line 13) | interface NativeTags {
type Properties (line 128) | interface Properties
type A (line 133) | interface A extends HTMLAttributes<HTMLAnchorElement> {
type Abbr (line 220) | interface Abbr extends HTMLAttributes<HTMLElement> {}
type Address (line 221) | interface Address extends HTMLAttributes<HTMLElement> {}
type Area (line 222) | interface Area extends HTMLAttributes<HTMLAreaElement> {
type Article (line 292) | interface Article extends HTMLAttributes<HTMLElement> {}
type Aside (line 293) | interface Aside extends HTMLAttributes<HTMLElement> {}
type Audio (line 294) | interface Audio extends HTMLAttributes<HTMLAudioElement> {
type B (line 356) | interface B extends HTMLAttributes<HTMLElement> {}
type Base (line 357) | interface Base extends HTMLAttributes<HTMLBaseElement> {
type BDI (line 370) | interface BDI extends HTMLAttributes<HTMLElement> {}
type BDO (line 371) | interface BDO extends HTMLAttributes<HTMLElement> {}
type BlockQuote (line 372) | interface BlockQuote extends HTMLAttributes<HTMLQuoteElement> {
type Body (line 379) | interface Body extends HTMLAttributes<HTMLBodyElement> {
type Br (line 526) | interface Br extends HTMLAttributes<HTMLBRElement> {
type Button (line 530) | interface Button extends HTMLAttributes<HTMLButtonElement> {
type Canvas (line 603) | interface Canvas extends HTMLAttributes<HTMLCanvasElement> {
type Caption (line 616) | interface Caption extends HTMLAttributes<HTMLTableCaptionElement> {
type Cite (line 620) | interface Cite extends HTMLAttributes<HTMLElement> {}
type Code (line 621) | interface Code extends HTMLAttributes<HTMLElement> {}
type Col (line 622) | interface Col extends HTMLAttributes<HTMLTableColElement> {
type ColGroup (line 644) | interface ColGroup extends HTMLAttributes<HTMLTableColElement> {
type Data (line 666) | interface Data extends HTMLAttributes<HTMLDataElement> {
type DataList (line 674) | interface DataList extends HTMLAttributes<HTMLDataListElement> {}
type DD (line 675) | interface DD extends HTMLAttributes<HTMLElement> {
type Del (line 679) | interface Del extends HTMLAttributes<HTMLModElement> {
type Details (line 692) | interface Details extends HTMLAttributes<HTMLDetailsElement> {
type Dfn (line 706) | interface Dfn extends HTMLAttributes<HTMLElement> {}
type Dialog (line 707) | interface Dialog extends HTMLAttributes<HTMLDialogElement> {
type Div (line 727) | interface Div extends HTMLAttributes<HTMLDivElement> {}
type DL (line 728) | interface DL extends HTMLAttributes<HTMLDListElement> {}
type DT (line 729) | interface DT extends HTMLAttributes<HTMLElement> {}
type Em (line 730) | interface Em extends HTMLAttributes<HTMLElement> {}
type Embed (line 731) | interface Embed extends HTMLAttributes<HTMLEmbedElement> {
type FieldSet (line 756) | interface FieldSet extends HTMLAttributes<HTMLFieldSetElement> {
type FigCaption (line 774) | interface FigCaption extends HTMLAttributes<HTMLElement> {}
type Figure (line 775) | interface Figure extends HTMLAttributes<HTMLElement> {}
type Form (line 776) | interface Form extends HTMLAttributes<HTMLFormElement> {
type H1 (line 863) | interface H1 extends HTMLAttributes<HTMLHeadingElement> {}
type H2 (line 864) | interface H2 extends HTMLAttributes<HTMLHeadingElement> {}
type H3 (line 865) | interface H3 extends HTMLAttributes<HTMLHeadingElement> {}
type H4 (line 866) | interface H4 extends HTMLAttributes<HTMLHeadingElement> {}
type H5 (line 867) | interface H5 extends HTMLAttributes<HTMLHeadingElement> {}
type H6 (line 868) | interface H6 extends HTMLAttributes<HTMLHeadingElement> {}
type Footer (line 869) | interface Footer extends HTMLAttributes<HTMLElement> {}
type Head (line 870) | interface Head extends HTMLAttributes<HTMLHeadElement> {
type Header (line 876) | interface Header extends HTMLAttributes<HTMLElement> {}
type HGroup (line 877) | interface HGroup extends HTMLAttributes<HTMLElement> {}
type HR (line 878) | interface HR extends HTMLAttributes<HTMLHRElement> {
type HTML (line 890) | interface HTML extends HTMLAttributes<HTMLHtmlElement> {
type I (line 900) | interface I extends HTMLAttributes<HTMLElement> {}
type IFrame (line 901) | interface IFrame extends HTMLAttributes<HTMLIFrameElement> {
type Img (line 982) | interface Img extends HTMLAttributes<HTMLImageElement> {
type Input (line 1075) | interface Input extends HTMLAttributes<HTMLInputElement> {
type Ins (line 1344) | interface Ins extends HTMLAttributes<HTMLModElement> {
type Kbd (line 1358) | interface Kbd extends HTMLAttributes<HTMLElement> {}
type Label (line 1359) | interface Label extends HTMLAttributes<HTMLLabelElement> {
type Legend (line 1375) | interface Legend extends HTMLAttributes<HTMLLegendElement> {}
type LI (line 1376) | interface LI extends HTMLAttributes<HTMLLIElement> {
type Link (line 1387) | interface Link extends HTMLAttributes<HTMLLinkElement> {
type Main (line 1519) | interface Main extends HTMLAttributes<HTMLElement> {}
type Map (line 1520) | interface Map extends HTMLAttributes<HTMLMapElement> {
type Mark (line 1527) | interface Mark extends HTMLAttributes<HTMLElement> {}
type Menu (line 1528) | interface Menu extends HTMLAttributes<HTMLMenuElement> {
type Meta (line 1541) | interface Meta extends HTMLAttributes<HTMLMetaElement> {
type Meter (line 1575) | interface Meter extends HTMLAttributes<HTMLMeterElement> {
type Nav (line 1613) | interface Nav extends HTMLAttributes<HTMLElement> {}
type NoScript (line 1614) | interface NoScript extends HTMLAttributes<HTMLElement> {}
type Object (line 1615) | interface Object extends HTMLAttributes<HTMLObjectElement> {
type OL (line 1673) | interface OL extends HTMLAttributes<HTMLOListElement> {
type OptGroup (line 1692) | interface OptGroup extends HTMLAttributes<HTMLOptGroupElement> {
type Option (line 1705) | interface Option extends HTMLAttributes<HTMLOptionElement> {
type Output (line 1730) | interface Output extends HTMLAttributes<HTMLOutputElement> {
type P (line 1750) | interface P extends HTMLAttributes<HTMLParagraphElement> {}
type Picture (line 1751) | interface Picture extends HTMLAttributes<HTMLPictureElement> {}
type Pre (line 1752) | interface Pre extends HTMLAttributes<HTMLPreElement> {
type Progress (line 1760) | interface Progress extends HTMLAttributes<HTMLProgressElement> {
type Q (line 1774) | interface Q extends HTMLAttributes<HTMLQuoteElement> {
type RP (line 1782) | interface RP extends HTMLAttributes<HTMLElement> {}
type RT (line 1783) | interface RT extends HTMLAttributes<HTMLElement> {}
type Ruby (line 1784) | interface Ruby extends HTMLAttributes<HTMLElement> {}
type S (line 1785) | interface S extends HTMLAttributes<HTMLElement> {}
type Samp (line 1786) | interface Samp extends HTMLAttributes<HTMLElement> {}
type Script (line 1787) | interface Script extends HTMLAttributes<HTMLScriptElement> {
type Section (line 1859) | interface Section extends HTMLAttributes<HTMLElement> {}
type Select (line 1860) | interface Select extends HTMLAttributes<HTMLSelectElement> {
type Slot (line 1926) | interface Slot extends HTMLAttributes<HTMLSlotElement> {
type Small (line 1934) | interface Small extends HTMLAttributes<HTMLElement> {}
type Source (line 1935) | interface Source extends HTMLAttributes<HTMLSourceElement> {
type Span (line 1983) | interface Span extends HTMLAttributes<HTMLSpanElement> {}
type Strong (line 1984) | interface Strong extends HTMLAttributes<HTMLElement> {}
type Style (line 1985) | interface Style extends HTMLAttributes<HTMLStyleElement> {
type Sub (line 2005) | interface Sub extends HTMLAttributes<HTMLElement> {}
type Summary (line 2006) | interface Summary extends HTMLAttributes<HTMLElement> {}
type Sup (line 2007) | interface Sup extends HTMLAttributes<HTMLElement> {}
type Table (line 2008) | interface Table extends HTMLAttributes<HTMLTableElement> {
type TBody (line 2028) | interface TBody extends HTMLAttributes<HTMLTableSectionElement> {
type TD (line 2040) | interface TD extends HTMLAttributes<HTMLTableCellElement> {
type Template (line 2078) | interface Template extends HTMLAttributes<HTMLTemplateElement> {
type TextArea (line 2087) | interface TextArea extends HTMLAttributes<HTMLTextAreaElement> {
type TFoot (line 2193) | interface TFoot extends HTMLAttributes<HTMLTableSectionElement> {
type TH (line 2205) | interface TH extends HTMLAttributes<HTMLTableCellElement> {
type THead (line 2254) | interface THead extends HTMLAttributes<HTMLTableSectionElement> {
type Time (line 2266) | interface Time extends HTMLAttributes<HTMLTimeElement> {
type Title (line 2274) | interface Title extends HTMLAttributes<HTMLTitleElement> {}
type TR (line 2275) | interface TR extends HTMLAttributes<HTMLTableRowElement> {
type Track (line 2287) | interface Track extends HTMLAttributes<HTMLTrackElement> {
type U (line 2300) | interface U extends HTMLAttributes<HTMLElement> {}
type UL (line 2301) | interface UL extends HTMLAttributes<HTMLUListElement> {
type Var (line 2307) | interface Var extends HTMLAttributes<HTMLElement> {}
type Video (line 2308) | interface Video extends HTMLAttributes<HTMLVideoElement> {
type WBr (line 2404) | interface WBr extends HTMLAttributes<HTMLElement> {}
type Directives (line 2407) | interface Directives {
type HTMLAttributes (line 2439) | interface HTMLAttributes<
type AriaAttributes (line 3472) | interface AriaAttributes {
type AttrMissing (line 3865) | type AttrMissing = undefined | null | false;
type AttrClass (line 3866) | type AttrClass =
type AttrStyle (line 3871) | type AttrStyle = AttrMissing | string | Marko.CSS.Properties | AttrStyle[];
type AttrCrossOrigin (line 3872) | type AttrCrossOrigin = AttrBoolean | "anonymous" | "use-credentials";
type AttrEventHandler (line 3873) | type AttrEventHandler<Event, Target> =
type AttrTarget (line 3876) | type AttrTarget =
type AttrReferrerPolicy (line 3883) | type AttrReferrerPolicy =
type AttrString (line 3893) | type AttrString = AttrMissing | string;
type AttrStringOrNumber (line 3894) | type AttrStringOrNumber = AttrString | number;
type AttrBoolean (line 3895) | type AttrBoolean = AttrMissing | boolean;
type AttrBooleanOrString (line 3896) | type AttrBooleanOrString = AttrBoolean | string;
type AttrBooleanString (line 3897) | type AttrBooleanString = AttrMissing | "false" | "true";
type AttrYesNoString (line 3898) | type AttrYesNoString = AttrMissing | "no" | "yes";
type AttrTriState (line 3899) | type AttrTriState = AttrBooleanString | "mixed";
type AttrOnOff (line 3900) | type AttrOnOff = AttrMissing | "on" | "off";
type AttrAutoComplete (line 3901) | type AttrAutoComplete =
FILE: packages/runtime-class/test/__util__/BrowserHelpers.js
function BrowserHelpers (line 6) | function BrowserHelpers() {
method targetEl (line 91) | get targetEl() {
FILE: packages/runtime-class/test/__util__/async-helpers.js
function immediatePromise (line 32) | function immediatePromise() {
FILE: packages/runtime-class/test/__util__/async-test-suite.js
function moveSuite (line 46) | function moveSuite(suite, newParent) {
function moveTest (line 53) | function moveTest(test, newParent) {
FILE: packages/runtime-class/test/__util__/create-marko-jsdom-module.js
method beforeParse (line 29) | beforeParse(window, browser) {
function compileMarkoModule (line 47) | function compileMarkoModule(module, filename) {
FILE: packages/runtime-class/test/__util__/domToHTML.js
function getNodeValue (line 30) | function getNodeValue(node) {
function getFirstChild (line 34) | function getFirstChild(node) {
function getNextSibling (line 38) | function getNextSibling(node) {
function vdomToHTML (line 42) | function vdomToHTML(node, options) {
FILE: packages/runtime-class/test/__util__/domToString.js
function ltrim (line 1) | function ltrim(s) {
function getNodeType (line 5) | function getNodeType(node) {
function getNodeValue (line 9) | function getNodeValue(node) {
function getFirstChild (line 13) | function getFirstChild(node) {
function getNextSibling (line 17) | function getNextSibling(node) {
function vdomToHTML (line 21) | function vdomToHTML(node, options) {
FILE: packages/runtime-class/test/__util__/toHTML.js
function getNodeType (line 1) | function getNodeType(node) {
function getNodeValue (line 5) | function getNodeValue(node) {
function getFirstChild (line 9) | function getFirstChild(node) {
function getNextSibling (line 13) | function getNextSibling(node) {
function toHTML (line 17) | function toHTML(node) {
FILE: packages/runtime-class/test/api-compiler/fixtures/compileFileForBrowser-callback.js/expected.js
function _interopRequireDefault (line 1) | function _interopRequireDefault(e) {return e && e.__esModule ? e : { def...
FILE: packages/runtime-class/test/api-compiler/fixtures/compileFileForBrowser.js/expected.js
function _interopRequireDefault (line 1) | function _interopRequireDefault(e) {return e && e.__esModule ? e : { def...
FILE: packages/runtime-class/test/api-compiler/fixtures/compileForBrowser-callback.js/expected.js
function _interopRequireDefault (line 1) | function _interopRequireDefault(e) {return e && e.__esModule ? e : { def...
FILE: packages/runtime-class/test/api-compiler/fixtures/compileForBrowser-write-version-comment.js/test.js
function getMarkoVersionComment (line 5) | function getMarkoVersionComment() {
FILE: packages/runtime-class/test/api-compiler/fixtures/compileForBrowser.js/expected.js
function _interopRequireDefault (line 1) | function _interopRequireDefault(e) {return e && e.__esModule ? e : { def...
FILE: packages/runtime-class/test/api/fixtures/require-hook-compiler-options/test.js
function compileAndCheck (line 4) | function compileAndCheck(path, shouldHaveErrored) {
FILE: packages/runtime-class/test/async-stream/index.test.js
function createAsyncStream (line 20) | function createAsyncStream(options) {
function handleFinished (line 741) | function handleFinished() {
FILE: packages/runtime-class/test/async-vdom-builder/index.test.js
function getChildNodes (line 6) | function getChildNodes(parentNode) {
FILE: packages/runtime-class/test/components-browser/fixtures/component-conditional-events/component.js
method log (line 7) | log(data) {
method clearLog (line 11) | clearLog() {
method toggle (line 15) | toggle() {
FILE: packages/runtime-class/test/components-browser/fixtures/component-destroy-unsubscribe-dom-events/component.js
function log (line 11) | function log(data) {
FILE: packages/runtime-class/test/components-browser/fixtures/component-dom-events/component.js
function log (line 11) | function log(data) {
FILE: packages/runtime-class/test/components-browser/fixtures/component-dom-events/components/app-legacy-button/component.js
function log (line 9) | function log(data) {
FILE: packages/runtime-class/test/components-browser/fixtures/component-dynamic-tag-name/test.js
function renderComponent (line 4) | function renderComponent(rootTagName) {
FILE: packages/runtime-class/test/components-browser/fixtures/component-extends-EventEmitter/test.js
function fooListener (line 8) | function fooListener() {
FILE: packages/runtime-class/test/components-browser/fixtures/component-file-exports-class/component.js
function Component (line 1) | function Component() {
FILE: packages/runtime-class/test/components-browser/fixtures/component-preserve-all-state-when-rendered-in-loop/test.js
function getKeyLookup (line 25) | function getKeyLookup(els) {
function ensurePreservedKeys (line 43) | function ensurePreservedKeys(lookupA, lookupB, path) {
FILE: packages/runtime-class/test/components-browser/fixtures/component-preserve-dom-if/test.js
function getTimestamps (line 6) | function getTimestamps() {
FILE: packages/runtime-class/test/components-browser/fixtures/component-stateful-update-on-mount/component.js
method onCreate (line 2) | onCreate() {
method onMount (line 5) | onMount() {
FILE: packages/runtime-class/test/components-browser/fixtures/component-unique-id/test.js
function renderComponent (line 6) | function renderComponent() {
FILE: packages/runtime-class/test/components-browser/fixtures/destroy-cleanup/component.js
method onMount (line 2) | onMount() {
method onDestroy (line 8) | onDestroy() {
FILE: packages/runtime-class/test/components-browser/fixtures/diffpatch-rearrange-keyed-components/test.js
function checkOrder (line 8) | function checkOrder(letters) {
FILE: packages/runtime-class/test/components-browser/fixtures/diffpatch-rearrange-keyed-els/test.js
function checkOrder (line 7) | function checkOrder(letters) {
FILE: packages/runtime-class/test/components-browser/fixtures/split-browser-export-class/component-browser.js
function Component (line 1) | function Component() {}
FILE: packages/runtime-class/test/components-browser/fixtures/tag-empty/component.js
method onMount (line 2) | onMount() {
FILE: packages/runtime-class/test/components-browser/fixtures/tag-empty/test.js
function check (line 4) | function check(tag, isFirst) {
FILE: packages/runtime-class/test/components-browser/index.test.js
function runClientTest (line 16) | function runClientTest(fixture) {
function runHydrateTest (line 56) | function runHydrateTest(fixture) {
FILE: packages/runtime-class/test/components-browser/template.component-browser.js
method onMount (line 2) | onMount() {
FILE: packages/runtime-class/test/components-pages/fixtures/component-globals-async/tests.js
function testHelloComponent (line 4) | function testHelloComponent(helloComponent) {
FILE: packages/runtime-class/test/components-pages/fixtures/component-implicit-event-handlers/template.component-browser.js
method onMount (line 2) | onMount() {
method trackClick (line 6) | trackClick() {
FILE: packages/runtime-class/test/components-pages/fixtures/component-init-async/tests.js
function testHelloComponent (line 4) | function testHelloComponent(name) {
FILE: packages/runtime-class/test/components-pages/fixtures/component-mount-root-hasRenderBody/tests.js
function triggerMouseEvent (line 3) | function triggerMouseEvent(el, type) {
function triggerClick (line 25) | function triggerClick(el) {
FILE: packages/runtime-class/test/components-pages/fixtures/component-mount-root-renderBody/tests.js
function triggerMouseEvent (line 3) | function triggerMouseEvent(el, type) {
function triggerClick (line 25) | function triggerClick(el) {
FILE: packages/runtime-class/test/components-pages/fixtures/dom-events-bubbling/tests.js
function triggerMouseEvent (line 1) | function triggerMouseEvent(el, type) {
function triggerClick (line 23) | function triggerClick(el) {
FILE: packages/runtime-class/test/components-pages/fixtures/dom-events/tests.js
function triggerMouseEvent (line 3) | function triggerMouseEvent(el, type) {
function triggerClick (line 25) | function triggerClick(el) {
FILE: packages/runtime-class/test/components-pages/fixtures/empty-tag-with-key/components/split-tag-key/component-browser.js
method onMount (line 2) | onMount() {
FILE: packages/runtime-class/test/components-pages/fixtures/lifecycle-events/components/lifecycle-events-component-class-ctor/component.js
function Component (line 3) | function Component() {
FILE: packages/runtime-class/test/components-pages/fixtures/lifecycle-events/components/lifecycle-events-component-class/component.js
function Component (line 3) | function Component() {}
FILE: packages/runtime-class/test/components-pages/fixtures/onInput/components/onInput-assign-null-and-return/component-browser.js
method onMount (line 2) | onMount() {
FILE: packages/runtime-class/test/components-pages/fixtures/split-async-keys/components/app-hello/component-browser.js
method onMount (line 2) | onMount() {
FILE: packages/runtime-class/test/components-pages/fixtures/split-component-dynamic-tag/components/app-root/component-browser.js
method onMount (line 2) | onMount() {
method handleElClick (line 8) | handleElClick() {
method handleComponentClick (line 12) | handleComponentClick() {
FILE: packages/runtime-class/test/components-pages/fixtures/split-component-renderer/components/app-button-split-export-class/component-browser.js
function Component (line 1) | function Component() {}
FILE: packages/runtime-class/test/components-pages/fixtures/split-emit-multi-args/tests.js
function triggerMouseEvent (line 3) | function triggerMouseEvent(el, type) {
function triggerClick (line 25) | function triggerClick(el) {
FILE: packages/runtime-class/test/components-pages/index.test.js
function run (line 15) | function run(fixture) {
FILE: packages/runtime-class/test/components-server/index.test.js
function run (line 9) | function run(fixture) {
FILE: packages/runtime-class/test/hot-reload/fixtures/template-export-component/a/component.js
method onInput (line 2) | onInput() {
FILE: packages/runtime-class/test/hot-reload/fixtures/template-export-component/b/component.js
method onInput (line 2) | onInput() {
FILE: packages/runtime-class/test/hot-reload/fixtures/template-export-component/test.js
function copyFiles (line 6) | function copyFiles(dir) {
FILE: packages/runtime-class/test/morphdom/index.test.js
function serializeNode (line 60) | function serializeNode(node) {
FILE: packages/runtime-class/test/node-require/index.test.js
function testNodeRequireInstall (line 12) | function testNodeRequireInstall(options, expected) {
FILE: packages/runtime-class/test/render/fixtures/component-file-export-class/components/hello/component.js
method onCreate (line 4) | onCreate() {
FILE: packages/runtime-class/test/render/fixtures/dynamic-split-component/components/dynamic-split-no-body/component-browser.js
method onMount (line 2) | onMount() {
FILE: packages/runtime-class/test/render/fixtures/dynamic-split-component/components/dynamic-split/component-browser.js
method onMount (line 2) | onMount() {
FILE: packages/runtime-class/test/render/fixtures/dynamic-tag-layout/test.js
method layoutDynamic (line 2) | get layoutDynamic() { return require("./components/layout.marko") }
FILE: packages/runtime-class/test/render/fixtures/include-dynamic/test.js
method includeTarget (line 2) | get includeTarget() { return require("./include-target.marko") }
FILE: packages/runtime-class/test/render/fixtures/include-layout-data-attrs/test.js
method layoutDynamic (line 2) | get layoutDynamic() { return require("./layout-default.marko") }
FILE: packages/runtime-class/test/render/fixtures/include-layout-data/test.js
method layoutDynamic (line 2) | get layoutDynamic() { return require("./layout-default.marko") }
FILE: packages/runtime-class/test/render/fixtures/include-layout-v3-compat/test.js
method layoutDynamic (line 2) | get layoutDynamic() { return require("./layout-default.marko").default }
FILE: packages/runtime-class/test/render/fixtures/include-layout/test.js
method layoutDynamic (line 2) | get layoutDynamic() { return require("./layout-default.marko").default }
FILE: packages/runtime-class/test/render/fixtures/include-renderBody-data-and-attrs/test.js
method renderBody (line 2) | renderBody(out, data) {
FILE: packages/runtime-class/test/render/fixtures/include-renderBody-no-data/test.js
method renderBody (line 2) | renderBody(out) {
FILE: packages/runtime-class/test/render/fixtures/include-renderBody-string-arg/test.js
method renderBody (line 2) | renderBody(out, name) {
FILE: packages/runtime-class/test/render/fixtures/include-renderBody/test.js
method renderBody (line 2) | renderBody(out, data) {
FILE: packages/runtime-class/test/render/index.test.js
function testRunner (line 25) | function testRunner(fixture) {
function compareNormalized (line 29) | function compareNormalized({ test, context }) {
function runRenderTest (line 39) | async function runRenderTest(fixture) {
function normalizeHtml (line 181) | function normalizeHtml(htmlOrNode) {
function isIgnoredTag (line 227) | function isIgnoredTag(node) {
function isClientReorderFragment (line 239) | function isClientReorderFragment(node) {
function createAsyncVerifier (line 243) | function createAsyncVerifier(main, snapshot, out, isVDOM) {
FILE: packages/runtime-class/test/taglib-finder/fixtures/reset/test.js
function getPaths (line 7) | function getPaths() {
FILE: packages/runtime-class/test/translator/fixtures/at-tag-inside-if-tag/snapshots/cjs-expected.js
function _interopRequireDefault (line 10) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/at-tag-spread-undefined/snapshots/cjs-expected.js
function _interopRequireDefault (line 10) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/at-tags-dynamic-and-static/snapshots/cjs-expected.js
function _interopRequireDefault (line 10) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/at-tags-dynamic-tag-parent/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/at-tags-dynamic-with-params/snapshots/cjs-expected.js
function _interopRequireDefault (line 11) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/at-tags-dynamic/snapshots/cjs-expected.js
function _interopRequireDefault (line 12) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/at-tags-repeated-longhand/snapshots/cjs-expected.js
function _interopRequireDefault (line 12) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/at-tags-with-key/snapshots/cjs-expected.js
function _interopRequireDefault (line 10) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/at-tags/snapshots/cjs-expected.js
function _interopRequireDefault (line 10) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/attr-boolean/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/attr-class/snapshots/cjs-expected.js
function _interopRequireDefault (line 13) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/attr-escape/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/attr-falsey/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/attr-method-shorthand/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/attr-method-with-return/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/attr-no-update-scoped/snapshots/cjs-expected.js
function _interopRequireDefault (line 11) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/attr-scoped/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/attr-style/snapshots/cjs-expected.js
function _interopRequireDefault (line 13) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/attr-template-literal-escape/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/await-tag/snapshots/cjs-expected.js
function _interopRequireDefault (line 11) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/camel-case-attr-name-override/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/cdata/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/class-external-component-index/component.js
method onCreate (line 2) | onCreate() {
FILE: packages/runtime-class/test/translator/fixtures/class-external-component-index/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/class-external-component/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/class-external-component/template.component.js
method onCreate (line 2) | onCreate() {
FILE: packages/runtime-class/test/translator/fixtures/class-inline-class-props-without-on-create/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
method onCreate (line 12) | onCreate() {
FILE: packages/runtime-class/test/translator/fixtures/class-inline-class-props-without-on-create/snapshots/html-expected.js
method onCreate (line 7) | onCreate() {
FILE: packages/runtime-class/test/translator/fixtures/class-inline-class-props-without-on-create/snapshots/htmlProduction-expected.js
method onCreate (line 7) | onCreate() {
FILE: packages/runtime-class/test/translator/fixtures/class-inline-class-props-without-on-create/snapshots/vdom-expected.js
method onCreate (line 9) | onCreate() {
FILE: packages/runtime-class/test/translator/fixtures/class-inline-class-props-without-on-create/snapshots/vdomProduction-expected.js
method onCreate (line 11) | onCreate() {
FILE: packages/runtime-class/test/translator/fixtures/class-inline/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
method onCreate (line 12) | onCreate() {
FILE: packages/runtime-class/test/translator/fixtures/class-inline/snapshots/html-expected.js
method onCreate (line 7) | onCreate() {
FILE: packages/runtime-class/test/translator/fixtures/class-inline/snapshots/htmlProduction-expected.js
method onCreate (line 7) | onCreate() {
FILE: packages/runtime-class/test/translator/fixtures/class-inline/snapshots/vdom-expected.js
method onCreate (line 9) | onCreate() {
FILE: packages/runtime-class/test/translator/fixtures/class-inline/snapshots/vdomProduction-expected.js
method onCreate (line 11) | onCreate() {
FILE: packages/runtime-class/test/translator/fixtures/client-import-hydrate-include/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/comments/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/custom-element-tag/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/custom-tag-child-analyze/components/hello/transformer.js
function readFileText (line 12) | function readFileText(tag) {
FILE: packages/runtime-class/test/translator/fixtures/custom-tag-child-analyze/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/custom-tag-data/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/custom-tag-migration/old.migrator.js
function enter (line 3) | function enter(path) {
function exit (line 13) | function exit(path) {
function toNodes (line 27) | function toNodes(nodePaths) {
FILE: packages/runtime-class/test/translator/fixtures/custom-tag-migration/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/custom-tag-parameters/snapshots/cjs-expected.js
function _interopRequireDefault (line 10) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/custom-tag-render-body/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/custom-tag-separate-assets/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/custom-tag-separate-assets/template.component.js
method onCreate (line 2) | onCreate() {}
FILE: packages/runtime-class/test/translator/fixtures/custom-tag-template/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/custom-tag-transform/div.transformer.js
function enter (line 3) | function enter(path) {
function exit (line 10) | function exit(path) {
function toNodes (line 24) | function toNodes(nodePaths) {
FILE: packages/runtime-class/test/translator/fixtures/custom-tag-transform/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/custom-tag/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/data-marko-implicit-component/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/data-migration/snapshots/cjs-expected.js
function _interopRequireDefault (line 10) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/data-reassigned/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/data-structure/snapshots/cjs-expected.js
function _interopRequireDefault (line 10) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/declaration/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/declared-class-member/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
class MyClass (line 11) | class MyClass {
method onCreate (line 15) | onCreate() {
FILE: packages/runtime-class/test/translator/fixtures/declared-class-member/snapshots/html-expected.js
class MyClass (line 5) | class MyClass {
method onCreate (line 10) | onCreate() {
FILE: packages/runtime-class/test/translator/fixtures/declared-class-member/snapshots/htmlProduction-expected.js
class MyClass (line 5) | class MyClass {
method onCreate (line 10) | onCreate() {
FILE: packages/runtime-class/test/translator/fixtures/declared-class-member/snapshots/vdom-expected.js
class MyClass (line 5) | class MyClass {
method onCreate (line 12) | onCreate() {
FILE: packages/runtime-class/test/translator/fixtures/declared-class-member/snapshots/vdomProduction-expected.js
class MyClass (line 5) | class MyClass {
method onCreate (line 12) | onCreate() {
FILE: packages/runtime-class/test/translator/fixtures/doctype/snapshots/cjs-expected.js
function _interopRequireDefault (line 11) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/dynamic-tag-name/snapshots/cjs-expected.js
function _interopRequireDefault (line 12) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/dynamic-tag-string-literal/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/else-tag-with-whitespace-and-comments/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/entities/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/error-at-tags-repeated-not-allowed/snapshots/cjs-expected.js
function _interopRequireDefault (line 10) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/error-body-only-if-no-condition/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/error-class-with-name/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
method onCreate (line 12) | onCreate() {}
FILE: packages/runtime-class/test/translator/fixtures/error-class-with-name/snapshots/html-expected.js
method onCreate (line 7) | onCreate() {}
FILE: packages/runtime-class/test/translator/fixtures/error-class-with-name/snapshots/htmlProduction-expected.js
method onCreate (line 7) | onCreate() {}
FILE: packages/runtime-class/test/translator/fixtures/error-class-with-name/snapshots/vdom-expected.js
method onCreate (line 9) | onCreate() {}
FILE: packages/runtime-class/test/translator/fixtures/error-class-with-name/snapshots/vdomProduction-expected.js
method onCreate (line 11) | onCreate() {}
FILE: packages/runtime-class/test/translator/fixtures/error-repeated-closing-dynamic-tag/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/event-handlers/snapshots/cjs-expected.js
function _interopRequireDefault (line 11) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/exports/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
function z (line 14) | function z() {}
FILE: packages/runtime-class/test/translator/fixtures/exports/snapshots/html-expected.js
function z (line 8) | function z() {}
FILE: packages/runtime-class/test/translator/fixtures/exports/snapshots/htmlProduction-expected.js
function z (line 8) | function z() {}
FILE: packages/runtime-class/test/translator/fixtures/exports/snapshots/vdom-expected.js
function z (line 8) | function z() {}
FILE: packages/runtime-class/test/translator/fixtures/exports/snapshots/vdomProduction-expected.js
function z (line 8) | function z() {}
FILE: packages/runtime-class/test/translator/fixtures/for-tag/snapshots/cjs-expected.js
function _interopRequireDefault (line 10) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/hello-dynamic/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/html-comment/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/html-entity/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/if-tag/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/import-hydrate-include/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
function _interopRequireWildcard (line 10) | function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMa...
FILE: packages/runtime-class/test/translator/fixtures/import-tag-conflict/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/import-tag/snapshots/cjs-expected.js
function _interopRequireDefault (line 10) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
function _interopRequireWildcard (line 11) | function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMa...
FILE: packages/runtime-class/test/translator/fixtures/macro-non-root/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
function _stuff (line 14) | function _stuff(out, x) {
FILE: packages/runtime-class/test/translator/fixtures/macro-non-root/snapshots/html-expected.js
function _stuff (line 9) | function _stuff(out, x) {
FILE: packages/runtime-class/test/translator/fixtures/macro-non-root/snapshots/htmlProduction-expected.js
function _stuff (line 9) | function _stuff(out, x) {
FILE: packages/runtime-class/test/translator/fixtures/macro-non-root/snapshots/vdom-expected.js
function _stuff (line 11) | function _stuff(out, x) {
FILE: packages/runtime-class/test/translator/fixtures/macro-non-root/snapshots/vdomProduction-expected.js
function _stuff (line 13) | function _stuff(out, x) {
FILE: packages/runtime-class/test/translator/fixtures/macros/snapshots/cjs-expected.js
function _interopRequireDefault (line 10) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
function _renderTree (line 16) | function _renderTree(out, node) {
FILE: packages/runtime-class/test/translator/fixtures/macros/snapshots/html-expected.js
function _renderTree (line 11) | function _renderTree(out, node) {
FILE: packages/runtime-class/test/translator/fixtures/macros/snapshots/htmlProduction-expected.js
function _renderTree (line 11) | function _renderTree(out, node) {
FILE: packages/runtime-class/test/translator/fixtures/macros/snapshots/vdom-expected.js
function _renderTree (line 12) | function _renderTree(out, node) {
FILE: packages/runtime-class/test/translator/fixtures/macros/snapshots/vdomProduction-expected.js
function _renderTree (line 12) | function _renderTree(out, node) {
FILE: packages/runtime-class/test/translator/fixtures/native-tag-spread-attrs/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/no-update-directives/snapshots/cjs-expected.js
function _interopRequireDefault (line 11) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/no-update-modifier-multiple/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/no-update-modifier/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/placeholders/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/prevent-override-component-def/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/root-migration/migrator.js
method Identifier (line 4) | Identifier(path) {
FILE: packages/runtime-class/test/translator/fixtures/root-migration/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/root-transform/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/root-transform/transformer.js
method Identifier (line 4) | Identifier(path) {
FILE: packages/runtime-class/test/translator/fixtures/sanity-check/snapshots/cjs-expected.js
function _interopRequireDefault (line 19) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
function more (line 25) | function more() {
method onCreate (line 29) | onCreate() {
function _thing (line 44) | function _thing(out, stuff) {
FILE: packages/runtime-class/test/translator/fixtures/sanity-check/snapshots/html-expected.js
function more (line 8) | function more() {
method onCreate (line 24) | onCreate() {
function _thing (line 39) | function _thing(out, stuff) {
FILE: packages/runtime-class/test/translator/fixtures/sanity-check/snapshots/htmlProduction-expected.js
function more (line 8) | function more() {
method onCreate (line 24) | onCreate() {
function _thing (line 30) | function _thing(out, stuff) {
FILE: packages/runtime-class/test/translator/fixtures/sanity-check/snapshots/vdom-expected.js
function more (line 8) | function more() {
method onCreate (line 22) | onCreate() {
function _thing (line 39) | function _thing(out, stuff) {
FILE: packages/runtime-class/test/translator/fixtures/sanity-check/snapshots/vdomProduction-expected.js
function more (line 8) | function more() {
method onCreate (line 41) | onCreate() {
function _thing (line 58) | function _thing(out, stuff) {
FILE: packages/runtime-class/test/translator/fixtures/scriptlet-comments/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/scriptlet-line-block/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
function bar (line 15) | function bar() {}
FILE: packages/runtime-class/test/translator/fixtures/scriptlet-line-block/snapshots/html-expected.js
function bar (line 10) | function bar() {}
FILE: packages/runtime-class/test/translator/fixtures/scriptlet-line-block/snapshots/htmlProduction-expected.js
function bar (line 10) | function bar() {}
FILE: packages/runtime-class/test/translator/fixtures/scriptlet-line-block/snapshots/vdom-expected.js
function bar (line 11) | function bar() {}
FILE: packages/runtime-class/test/translator/fixtures/scriptlet-line-block/snapshots/vdomProduction-expected.js
function bar (line 11) | function bar() {}
FILE: packages/runtime-class/test/translator/fixtures/scriptlet-var-collision/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/server-import-only/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/shorthand-classname/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/shorthand-id/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/simple-attrs-tag/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/simple/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/split-component-with-component/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/split-component/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/statement-comment-only/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/static-tag/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
function bar (line 12) | function bar() {}
FILE: packages/runtime-class/test/translator/fixtures/static-tag/snapshots/html-expected.js
function bar (line 6) | function bar() {}
FILE: packages/runtime-class/test/translator/fixtures/static-tag/snapshots/htmlProduction-expected.js
function bar (line 6) | function bar() {}
FILE: packages/runtime-class/test/translator/fixtures/static-tag/snapshots/vdom-expected.js
function bar (line 6) | function bar() {}
FILE: packages/runtime-class/test/translator/fixtures/static-tag/snapshots/vdomProduction-expected.js
function bar (line 6) | function bar() {}
FILE: packages/runtime-class/test/translator/fixtures/style-block-empty/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/style-block-with-styles/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/svg-tag/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/tag-block-scoping/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/tag-with-default-attr/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/textarea-tag/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/top-level-text/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/typescript-basic/snapshots/cjs-expected.js
function _interopRequireDefault (line 9) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/typescript-generic-tag/snapshots/cjs-expected.js
function _interopRequireDefault (line 12) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/warn-macro-duplicate/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
function _thing (line 13) | function _thing(out, stuff) {
FILE: packages/runtime-class/test/translator/fixtures/warn-macro-duplicate/snapshots/html-expected.js
function _thing (line 8) | function _thing(out, stuff) {
FILE: packages/runtime-class/test/translator/fixtures/warn-macro-duplicate/snapshots/htmlProduction-expected.js
function _thing (line 8) | function _thing(out, stuff) {
FILE: packages/runtime-class/test/translator/fixtures/warn-macro-duplicate/snapshots/vdom-expected.js
function _thing (line 10) | function _thing(out, stuff) {
FILE: packages/runtime-class/test/translator/fixtures/warn-macro-duplicate/snapshots/vdomProduction-expected.js
function _thing (line 12) | function _thing(out, stuff) {
FILE: packages/runtime-class/test/translator/fixtures/while-tag/snapshots/cjs-expected.js
function _interopRequireDefault (line 7) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/fixtures/white-space-test/snapshots/cjs-expected.js
function _interopRequireDefault (line 8) | function _interopRequireDefault(e) { return e && e.__esModule ? e : { de...
FILE: packages/runtime-class/test/translator/index.test.js
method resolveVirtualDependency (line 31) | resolveVirtualDependency(from, { virtualPath }) {
function runTest (line 38) | function runTest(config) {
function stripCwd (line 119) | function stripCwd(message) {
function stripModuleStackTrace (line 123) | function stripModuleStackTrace(message) {
function printDiags (line 127) | function printDiags(diags) {
function printLoc (line 139) | function printLoc(loc) {
FILE: packages/runtime-class/test/vdom-create/fixtures/isSameNode-createElement/index.js
function isSameNode (line 5) | function isSameNode(virtualEl, realEl) {
FILE: packages/runtime-tags/index.d.ts
type ReadableStream (line 10) | interface ReadableStream {}
type Global (line 15) | interface Global {
type TemplateInput (line 29) | type TemplateInput<Input> = Input & {
type RenderedTemplate (line 35) | type RenderedTemplate = Promise<string> &
type MountedTemplate (line 47) | type MountedTemplate<Input = unknown, Return = unknown> = {
type Body (line 59) | interface Body<
type Renderable (line 65) | type Renderable =
type BodyReturnType (line 72) | type BodyReturnType<B> =
type BodyParameters (line 76) | type BodyParameters<B> =
type AttrTag (line 106) | type AttrTag<T> = T & {
type NativeTag (line 110) | interface NativeTag<
type NativeTags (line 117) | interface NativeTags {
type Input (line 121) | type Input<Name> = 0 extends 1 & Name
type Return (line 143) | type Return<Name> = 0 extends 1 & Name
FILE: packages/runtime-tags/scripts/bundle.ts
method setup (line 46) | setup(build) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/ambiguous-tags-dir/__snapshots__/dom.expected/template.js
function $setup (line 4) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/class/__snapshots__/dom.expected/template.js
method onCreate (line 9) | onCreate() {
method increment (line 14) | increment() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/class/__snapshots__/html.expected/template.js
method onCreate (line 8) | onCreate() {
method increment (line 13) | increment() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/custom-tag-parameters-from-args/__snapshots__/dom.expected/components/custom-tag.js
function $setup (line 21) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/custom-tag-parameters-from-args/test.ts
function click (line 4) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/error-class-tags-dir/__snapshots__/dom.expected/template.js
function $setup (line 6) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/__snapshots__/dom.expected/components/tags-counter.js
function $setup (line 11) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/__snapshots__/dom.expected/template.js
method onCreate (line 12) | onCreate() {
method increment (line 17) | increment() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/__snapshots__/html.expected/template.js
method onCreate (line 13) | onCreate() {
method increment (line 18) | increment() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-class-to-tags/test.ts
function clickClass (line 10) | function clickClass(container: Element) {
function clickTags (line 14) | function clickTags(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/__snapshots__/dom.expected/components/class-counter.js
method onCreate (line 9) | onCreate() {
method increment (line 14) | increment() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/__snapshots__/dom.expected/template.js
function $setup (line 18) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/__snapshots__/html.expected/components/class-counter.js
method onCreate (line 9) | onCreate() {
method increment (line 14) | increment() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-basic-tags-to-class/test.ts
function clickClass (line 10) | function clickClass(container: Element) {
function clickTags (line 14) | function clickTags(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-in-components-in-tags-dir/__snapshots__/dom.expected/tags/hello.js
function $setup (line 8) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-in-components-in-tags-dir/__snapshots__/dom.expected/template.js
function $setup (line 4) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/__snapshots__/dom.expected/components/tags-counter.js
function $setup (line 11) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/__snapshots__/dom.expected/template.js
method onCreate (line 12) | onCreate() {
method increment (line 17) | increment() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/__snapshots__/html.expected/template.js
method onCreate (line 13) | onCreate() {
method increment (line 18) | increment() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-class-to-tags-import/test.ts
function clickClass (line 10) | function clickClass(container: Element) {
function clickTags (line 14) | function clickTags(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-handler-render-body-tags-to-class/__snapshots__/dom.expected/template.js
function $setup (line 19) | function $setup($scope) {
function $onClick (line 22) | function $onClick($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-event-handler-render-body-tags-to-class/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/__snapshots__/dom.expected/components/class-counter.js
method onCreate (line 9) | onCreate() {
method handleClick (line 14) | handleClick() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/__snapshots__/dom.expected/template.js
function $setup (line 10) | function $setup($scope) {
function $onCount (line 16) | function $onCount($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/__snapshots__/html.expected/components/class-counter.js
method onCreate (line 8) | onCreate() {
method handleClick (line 13) | handleClick() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-events-tags-to-class/test.ts
function clickClass (line 3) | function clickClass(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/__snapshots__/dom.expected/components/tags-layout.js
function $setup (line 11) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/__snapshots__/dom.expected/template.js
method onCreate (line 13) | onCreate() {
method increment (line 18) | increment() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/__snapshots__/html.expected/template.js
method onCreate (line 14) | onCreate() {
method increment (line 19) | increment() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-attr-tags-class-to-tags/test.ts
function clickClass (line 10) | function clickClass(container: Element) {
function clickTags (line 14) | function clickTags(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/__snapshots__/dom.expected/components/tags-layout.js
function $setup (line 11) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/__snapshots__/dom.expected/template.js
method onCreate (line 12) | onCreate() {
method increment (line 17) | increment() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/__snapshots__/html.expected/template.js
method onCreate (line 13) | onCreate() {
method increment (line 18) | increment() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-class-to-tags/test.ts
function clickClass (line 10) | function clickClass(container: Element) {
function clickTags (line 14) | function clickTags(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/__snapshots__/dom.expected/components/class-layout.js
method onCreate (line 10) | onCreate() {
method increment (line 15) | increment() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/__snapshots__/dom.expected/template.js
function $setup (line 19) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/__snapshots__/html.expected/components/class-layout.js
method onCreate (line 9) | onCreate() {
method increment (line 14) | increment() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-nested-tags-to-class/test.ts
function clickClass (line 10) | function clickClass(container: Element) {
function clickTags (line 14) | function clickTags(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/__snapshots__/dom.expected/components/my-button/component-browser.js
method handleClick (line 6) | handleClick(e) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/__snapshots__/dom.expected/template.js
function $setup (line 10) | function $setup($scope) {
function $onClick (line 15) | function $onClick() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/__snapshots__/html.expected/components/my-button/component-browser.js
method handleClick (line 6) | handleClick(e) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-stateless-tags-to-class/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/__snapshots__/dom.expected/components/tags-layout.js
function $setup (line 14) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/__snapshots__/dom.expected/template.js
method onCreate (line 12) | onCreate() {
method increment (line 17) | increment() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/__snapshots__/html.expected/template.js
method onCreate (line 13) | onCreate() {
method increment (line 18) | increment() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-class-to-tags/test.ts
function clickClass (line 10) | function clickClass(container: Element) {
function clickTags (line 14) | function clickTags(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/__snapshots__/dom.expected/components/class-layout.js
method onCreate (line 10) | onCreate() {
method increment (line 15) | increment() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/__snapshots__/dom.expected/template.js
function $setup (line 30) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/__snapshots__/html.expected/components/class-layout.js
method onCreate (line 9) | onCreate() {
method increment (line 14) | increment() {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/interop-tag-params-tags-to-class/test.ts
function clickClass (line 10) | function clickClass(container: Element) {
function clickTags (line 14) | function clickTags(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/let/__snapshots__/dom.expected/template.js
function $setup (line 11) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures-interop/let/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/assign-destructured-increment/__snapshots__/dom.expected/template.hydrate.js
function $foo (line 18) | function $foo($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/assign-destructured-increment/__snapshots__/dom.expected/template.js
function $setup (line 15) | function $setup($scope) {
function $foo (line 27) | function $foo($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/assign-destructured-increment/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/__snapshots__/dom.expected/template.hydrate.js
function $valueChange (line 15) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/assign-destructured-reduced/__snapshots__/dom.expected/template.js
function $setup (line 9) | function $setup($scope) {
function $valueChange (line 13) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/assign-destructured/__snapshots__/dom.expected/template.js
function $setup (line 16) | function $setup($scope) {
function $foo (line 25) | function $foo($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/assign-destructured/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/assign-in-wrapped-function/__snapshots__/dom.expected/template.js
function identity (line 3) | function identity(fn) {
function $setup (line 14) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/assign-in-wrapped-function/__snapshots__/html.expected/template.js
function identity (line 1) | function identity(fn) {
FILE: packages/runtime-tags/src/__tests__/fixtures/assign-in-wrapped-function/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/assign-live-read/__snapshots__/dom.expected/template.hydrate.js
function $resetCount (line 17) | function $resetCount($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/assign-live-read/__snapshots__/dom.expected/template.js
function $setup (line 18) | function $setup($scope) {
function $resetCount (line 21) | function $resetCount($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/assign-live-read/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/assign-to-owner-closure/__snapshots__/dom.expected/template.js
function $setup (line 10) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let-with-change-handler/__snapshots__/dom.expected/template.js
function $setup (line 9) | function $setup($scope) {
function $valueChange (line 14) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let-with-change-handler/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let/__snapshots__/dom.expected/template.js
function $setup (line 7) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/assign-to-pruned-let/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/async-deep-recursive/__snapshots__/dom.expected/template.js
function $setup (line 4) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/__snapshots__/dom.expected/template.js
function $setup (line 42) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/async-multi-resolve-in-order-and-update/test.ts
function click (line 4) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/async-nested-resolve-in-order/__snapshots__/dom.expected/template.js
function $setup (line 45) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/__snapshots__/dom.expected/template.js
function $setup (line 40) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-before-and-after-isolated-boundaries/test.ts
function click (line 4) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/async-reject-then-resolve-isolated-boundaries/__snapshots__/dom.expected/template.js
function $setup (line 26) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/async-reorder-nested-batched-resolve/__snapshots__/dom.expected/template.js
function $setup (line 70) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/async-resolve-in-order/__snapshots__/dom.expected/template.js
function $setup (line 13) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/async-resolve-out-of-order/__snapshots__/dom.expected/template.js
function $setup (line 13) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/async-state/__snapshots__/dom.expected/template.js
function $setup (line 25) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/async-state/test.ts
function click (line 4) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/at-tag-inside-if-tag/__snapshots__/dom.expected/template.js
function $setup (line 7) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-and-static/__snapshots__/dom.expected/template.js
method a (line 7) | a($scope) {
method v (line 10) | v($scope) {
function $setup (line 14) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-tag-parent/__snapshots__/dom.expected/template.js
function $setup (line 10) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/__snapshots__/dom.expected/template.js
function $setup (line 21) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic-with-params/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/at-tags-dynamic/__snapshots__/dom.expected/template.js
method row (line 7) | row($scope) {
function $setup (line 13) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-closure/__snapshots__/dom.expected/template.js
method zzz (line 6) | zzz($scope) {
function $setup (line 10) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-intersection-closure/__snapshots__/dom.expected/template.js
function $setup (line 20) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/at-tags-for-loop-param-intersection-closure/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/at-tags-static-repeated/__snapshots__/dom.expected/template.js
function $setup (line 7) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/at-tags/__snapshots__/dom.expected/template.js
function $setup (line 6) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/attr-boolean-dynamic/__snapshots__/dom.expected/template.js
function $setup (line 12) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/attr-boolean-dynamic/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/attr-class/__snapshots__/dom.expected/template.js
function $setup (line 34) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/attr-style/__snapshots__/dom.expected/template.js
function $setup (line 15) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/attr-tag-params-spread-reference/__snapshots__/dom.expected/template.js
function $setup (line 5) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/await-cleanup/__snapshots__/dom.expected/template.js
function $setup (line 44) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/await-cleanup/test.ts
function click (line 4) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/await-closure-function/__snapshots__/dom.expected/template.js
function $setup (line 22) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/__snapshots__/dom.expected/template.js
function $setup (line 19) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/await-closure-in-order/test.ts
function click (line 4) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/await-closure-inert/__snapshots__/dom.expected/template.js
function $setup (line 17) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/await-closure-within/__snapshots__/dom.expected/template.js
function $setup (line 27) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/await-closure-within/test.ts
function click (line 4) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/await-closure/__snapshots__/dom.expected/template.js
function $setup (line 25) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/await-closure/test.ts
function click (line 4) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/await-remove-parent/__snapshots__/dom.expected/template.js
function $setup (line 24) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/await-tag/__snapshots__/dom.expected/template.js
function $setup (line 31) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/await-tag/test.ts
function click (line 4) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/await-update-after-resume/__snapshots__/dom.expected/template.js
function $setup (line 32) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/await-update-before-resume/__snapshots__/dom.expected/template.js
function $setup (line 32) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-chain/__snapshots__/dom.expected/template.js
function $setup (line 7) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component-attrs/__snapshots__/dom.expected/template.hydrate.js
function $onClick (line 12) | function $onClick($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component-attrs/__snapshots__/dom.expected/template.js
function $setup (line 9) | function $setup($scope) {
function $onClick (line 13) | function $onClick($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component-attrs/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component-input-alias/__snapshots__/dom.expected/template.hydrate.js
function $onClick (line 12) | function $onClick($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component-input-alias/__snapshots__/dom.expected/template.js
function $setup (line 9) | function $setup($scope) {
function $onClick (line 13) | function $onClick($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component-input-alias/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias-within-pattern/__snapshots__/dom.expected/template.hydrate.js
function $onClick2 (line 18) | function $onClick2($scope) {
function $onClick (line 23) | function $onClick($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias-within-pattern/__snapshots__/dom.expected/template.js
function $setup (line 13) | function $setup($scope) {
function $onClick2 (line 18) | function $onClick2($scope) {
function $onClick (line 23) | function $onClick($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias-within-pattern/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias/__snapshots__/dom.expected/template.hydrate.js
function $onClick (line 13) | function $onClick($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias/__snapshots__/dom.expected/template.js
function $setup (line 9) | function $setup($scope) {
function $onClick (line 13) | function $onClick($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component-input-same-source-alias/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component-input/__snapshots__/dom.expected/template.hydrate.js
function $onClick (line 12) | function $onClick($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component-input/__snapshots__/dom.expected/template.js
function $setup (line 9) | function $setup($scope) {
function $onClick (line 13) | function $onClick($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component-input/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/dom.expected/template.hydrate.js
function $onClick (line 13) | function $onClick($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component-renderBody/__snapshots__/dom.expected/template.js
function $setup (line 13) | function $setup($scope) {
function $onClick (line 18) | function $onClick($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component-renderBody/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component/__snapshots__/dom.expected/tags/counter.js
function $setup (line 11) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component/__snapshots__/dom.expected/template.js
function $setup (line 4) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-component/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter-multiple-nodes/__snapshots__/dom.expected/template.js
function $setup (line 21) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-conditional-counter/__snapshots__/dom.expected/template.js
function $setup (line 21) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-converge-in-if/__snapshots__/dom.expected/template.js
function $setup (line 14) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-counter-const-event-handler/__snapshots__/dom.expected/template.hydrate.js
function $increment (line 9) | function $increment($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-counter-const-event-handler/__snapshots__/dom.expected/template.js
function $setup (line 10) | function $setup($scope) {
function $increment (line 13) | function $increment($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-counter-const-event-handler/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-counter-multiplier/__snapshots__/dom.expected/template.js
function $setup (line 21) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-counter-multiplier/test.ts
function count (line 3) | function count(container: Element) {
function multiplier (line 7) | function multiplier(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-counter/__snapshots__/dom.expected/template.js
function $setup (line 11) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-counter/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-execution-order/__snapshots__/dom.expected/template.js
function $setup (line 14) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-execution-order/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-fn-with-block/__snapshots__/dom.expected/template.js
function $setup (line 13) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-fn-with-block/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-handler-multi-ref-nested/__snapshots__/dom.expected/template.js
function $setup (line 13) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-handler-multi-ref-nested/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-handler-refless/__snapshots__/dom.expected/template.js
function $setup (line 8) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-handler-refless/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/__snapshots__/dom.expected/template.js
function $setup (line 4) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-inert-collapsible-tree/test.ts
function toggle (line 3) | function toggle(id: string) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-layout/__snapshots__/dom.expected/template.js
function $setup (line 8) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-computed/__snapshots__/dom.expected/template.js
function $setup (line 19) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-computed/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-optional/__snapshots__/dom.expected/template.js
function $setup (line 17) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-member-expression-optional/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-merge-member-expression/__snapshots__/dom.expected/template.js
function $setup (line 13) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-merge-member-expression/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-nested-for/__snapshots__/dom.expected/template.js
function $setup (line 27) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-nested-for/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/__snapshots__/dom.expected/template.js
function $setup (line 28) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-nested-params/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-custom-tag/__snapshots__/dom.expected/template.js
function $setup (line 16) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-custom-tag/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-dynamic-tag/__snapshots__/dom.expected/template.js
function $setup (line 17) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-dynamic-tag/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-for/__snapshots__/dom.expected/template.js
function $setup (line 21) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-for/test.ts
function click (line 3) | function click(container: Element, number: number) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-if/__snapshots__/dom.expected/template.js
function $setup (line 20) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-nested-scope-if/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-push-pop-list/__snapshots__/dom.expected/template.js
function $setup (line 23) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-push-pop-list/test.ts
function add (line 3) | function add(container: Element) {
function remove (line 7) | function remove(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-shared-node-ref/__snapshots__/dom.expected/template.js
function $setup (line 23) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-shared-node-ref/test.ts
function toggle (line 3) | function toggle(container: Element) {
function reverse (line 7) | function reverse(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-static/__snapshots__/dom.expected/template.js
function $setup (line 5) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-toggle-show/__snapshots__/dom.expected/template.js
function $setup (line 12) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-toggle-show/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-unused-ref/__snapshots__/dom.expected/template.js
function $setup (line 11) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/basic-unused-ref/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/batched-updates-cleanup/__snapshots__/dom.expected/template.js
function $setup (line 16) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/batched-updates/__snapshots__/dom.expected/template.js
function $setup (line 14) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/bind-to-input/__snapshots__/dom.expected/template.js
function $setup (line 17) | function $setup($scope) {
function $countChange (line 28) | function $countChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/body-content/__snapshots__/dom.expected/template.hydrate.js
function $onClick (line 16) | function $onClick($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/body-content/__snapshots__/dom.expected/template.js
function $setup (line 15) | function $setup($scope) {
function $onClick (line 20) | function $onClick($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/branch-closure-if-only-child/__snapshots__/dom.expected/template.js
function $setup (line 16) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/branch-closure-if-only-child/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/catch-single-reject-async/__snapshots__/dom.expected/template.js
function $setup (line 23) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/catch-single-success-async/__snapshots__/dom.expected/template.js
function $setup (line 20) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/catch-single-success-sync/__snapshots__/dom.expected/template.js
function $setup (line 7) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/catch-single-throw-sync/__snapshots__/dom.expected/template.js
function $setup (line 13) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/change-handler-alias-assignment/__snapshots__/dom.expected/template.js
function $setup (line 9) | function $setup($scope) {
function $fooBar (line 15) | function $fooBar($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/change-handler-alias-assignment/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/circular-tag-var-function-serialize/__snapshots__/dom.expected/template.js
function $setup (line 12) | function $setup($scope) {
function $valueChange (line 17) | function $valueChange($scope) {
function $setter (line 22) | function $setter($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/__snapshots__/dom.expected/template.js
function $setup (line 21) | function $setup($scope) {
function $write (line 25) | function $write($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-for-shallow/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-deep/__snapshots__/dom.expected/template.js
function $setup (line 53) | function $setup($scope) {
function $write (line 59) | function $write($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-deep/test.ts
function clickOuter (line 3) | function clickOuter(container: Element) {
function clickMiddle (line 7) | function clickMiddle(container: Element) {
function clickInner (line 11) | function clickInner(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-same-scope/__snapshots__/dom.expected/template.js
function $setup (line 22) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-same-scope/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-shallow/__snapshots__/dom.expected/template.hydrate.js
function $write (line 28) | function $write($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-shallow/__snapshots__/dom.expected/template.js
function $setup (line 19) | function $setup($scope) {
function $write (line 22) | function $write($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-n-child-if-shallow/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-deep/__snapshots__/dom.expected/template.js
function $setup (line 38) | function $setup($scope) {
function $write (line 42) | function $write($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-deep/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-shallow/__snapshots__/dom.expected/template.js
function $setup (line 21) | function $setup($scope) {
function $write (line 25) | function $write($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-for-shallow/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-deep/__snapshots__/dom.expected/template.js
function $setup (line 53) | function $setup($scope) {
function $write (line 59) | function $write($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-deep/test.ts
function clickOuter (line 3) | function clickOuter(container: Element) {
function clickMiddle (line 7) | function clickMiddle(container: Element) {
function clickInner (line 11) | function clickInner(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-same-scope/__snapshots__/dom.expected/template.js
function $setup (line 22) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-same-scope/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-shallow/__snapshots__/dom.expected/template.hydrate.js
function $write (line 23) | function $write($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-shallow/__snapshots__/dom.expected/template.js
function $setup (line 19) | function $setup($scope) {
function $write (line 22) | function $write($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cleanup-single-child-if-shallow/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/closure-owner-scope-serialize-in-serialized-function/__snapshots__/dom.expected/template.js
function $setup (line 10) | function $setup($scope) {
function $run (line 14) | function $run($scope) {
function $text (line 19) | function $text() {
FILE: packages/runtime-tags/src/__tests__/fixtures/closure-serialize-reason/__snapshots__/dom.expected/template.js
function $setup (line 15) | function $setup($scope) {
function $getMessage (line 21) | function $getMessage($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/component-attrs-import-value/__snapshots__/dom.expected/tags/counter.js
function $setup (line 12) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/component-attrs-import-value/__snapshots__/dom.expected/template.js
function $setup (line 5) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/component-attrs-import-value/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/dom.expected/tags/display-intersection.js
function $setup (line 6) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/component-attrs-intersection/__snapshots__/dom.expected/template.js
function $setup (line 12) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/component-attrs-intersection/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/__snapshots__/dom.expected/tags/counter.js
function $setup (line 12) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/__snapshots__/dom.expected/template.js
function $setup (line 6) | function $setup($scope) {
function $formatNumber (line 17) | function $formatNumber(n) {
function $formatNumber2 (line 20) | function $formatNumber2(n) {
FILE: packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/__snapshots__/html.expected/template.js
function formatNumber2 (line 4) | function formatNumber2(n) {
FILE: packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-code/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/__snapshots__/dom.expected/template.js
function formatNumber2 (line 6) | function formatNumber2(n) {
function $setup (line 10) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/__snapshots__/html.expected/template.js
function formatNumber2 (line 4) | function formatNumber2(n) {
FILE: packages/runtime-tags/src/__tests__/fixtures/component-attrs-static-non-registered-function/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/conditional-table-row/__snapshots__/dom.expected/template.js
function $setup (line 12) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/conditional-table-row/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/const-tag-destructure/__snapshots__/dom.expected/template.js
function $setup (line 10) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/const-tag-hoist-error/__snapshots__/dom.expected/template.js
function $setup (line 7) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/const-tag/__snapshots__/dom.expected/template.js
function $setup (line 10) | function $setup($scope) {
function $y (line 15) | function $y() {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-many/__snapshots__/dom.expected/template.hydrate.js
function $checkedChange (line 30) | function $checkedChange($scope) {
function $valueChange (line 35) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-many/__snapshots__/dom.expected/template.js
function $setup (line 20) | function $setup($scope) {
function $checkedChange (line 23) | function $checkedChange($scope) {
function $valueChange (line 28) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-many/test.ts
function click0 (line 3) | function click0(container: Element) {
function click1 (line 7) | function click1(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-spread/__snapshots__/dom.expected/template.hydrate.js
function $checkedChange (line 16) | function $checkedChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-spread/__snapshots__/dom.expected/template.js
function $setup (line 12) | function $setup($scope) {
function $checkedChange (line 16) | function $checkedChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-spread/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-multiple-number/__snapshots__/dom.expected/template.hydrate.js
function $checkedValueChange3 (line 26) | function $checkedValueChange3($scope) {
function $checkedValueChange2 (line 34) | function $checkedValueChange2($scope) {
function $checkedValueChange (line 42) | function $checkedValueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-multiple-number/__snapshots__/dom.expected/template.js
function $setup (line 18) | function $setup($scope) {
function $checkedValueChange3 (line 22) | function $checkedValueChange3($scope) {
function $checkedValueChange2 (line 27) | function $checkedValueChange2($scope) {
function $checkedValueChange (line 32) | function $checkedValueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-multiple-number/test.ts
function click0 (line 3) | function click0(container: Element) {
function click1 (line 7) | function click1(container: Element) {
function click2 (line 11) | function click2(container: Element) {
function reset (line 15) | function reset(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-number/__snapshots__/dom.expected/template.hydrate.js
function $checkedValueChange3 (line 26) | function $checkedValueChange3($scope) {
function $checkedValueChange2 (line 31) | function $checkedValueChange2($scope) {
function $checkedValueChange (line 36) | function $checkedValueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-number/__snapshots__/dom.expected/template.js
function $setup (line 15) | function $setup($scope) {
function $checkedValueChange3 (line 19) | function $checkedValueChange3($scope) {
function $checkedValueChange2 (line 24) | function $checkedValueChange2($scope) {
function $checkedValueChange (line 29) | function $checkedValueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-number/test.ts
function click0 (line 3) | function click0(container: Element) {
function click1 (line 7) | function click1(container: Element) {
function click2 (line 11) | function click2(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-spread/__snapshots__/dom.expected/template.js
function $setup (line 27) | function $setup($scope) {
function $checkedValueChange2 (line 34) | function $checkedValueChange2($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value-spread/test.ts
function clickA (line 3) | function clickA(container: Element) {
function clickB (line 7) | function clickB(container: Element) {
function clickC (line 11) | function clickC(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value/__snapshots__/dom.expected/template.js
function $setup (line 19) | function $setup($scope) {
function $checkedValueChange2 (line 24) | function $checkedValueChange2($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-value/test.ts
function clickA (line 3) | function clickA(container: Element) {
function clickB (line 7) | function clickB(container: Element) {
function clickC (line 11) | function clickC(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values-spread/__snapshots__/dom.expected/template.js
function $setup (line 27) | function $setup($scope) {
function $checkedValueChange2 (line 34) | function $checkedValueChange2($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values-spread/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values/__snapshots__/dom.expected/template.js
function $setup (line 19) | function $setup($scope) {
function $checkedValueChange2 (line 24) | function $checkedValueChange2($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked-values/test.ts
function clickA (line 3) | function clickA(container: Element) {
function clickB (line 7) | function clickB(container: Element) {
function clickC (line 11) | function clickC(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked/__snapshots__/dom.expected/template.hydrate.js
function $checkedChange (line 6) | function $checkedChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked/__snapshots__/dom.expected/template.js
function $setup (line 9) | function $setup($scope) {
function $checkedChange (line 13) | function $checkedChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-checked/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-details-open/__snapshots__/dom.expected/template.hydrate.js
function $openChange (line 6) | function $openChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-details-open/__snapshots__/dom.expected/template.js
function $setup (line 9) | function $setup($scope) {
function $openChange (line 13) | function $openChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-details-open/test.ts
function toggle (line 3) | function toggle(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open/__snapshots__/dom.expected/template.hydrate.js
function $openChange (line 6) | function $openChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open/__snapshots__/dom.expected/template.js
function $setup (line 9) | function $setup($scope) {
function $openChange (line 13) | function $openChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-dialog-open/test.ts
function toggle (line 3) | function toggle(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-dynamic-checkbox-checked-value/__snapshots__/dom.expected/template.js
function $setup (line 35) | function $setup($scope) {
function $checkedValueChange2 (line 41) | function $checkedValueChange2($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-dynamic-checkbox-checked-value/test.ts
function clickA (line 3) | function clickA(container: Element) {
function clickB (line 7) | function clickB(container: Element) {
function toggleB (line 11) | function toggleB(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/__snapshots__/dom.expected/tags/custom-input.js
function $valueChange (line 13) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/__snapshots__/dom.expected/template.hydrate.js
function $valueChange$1 (line 11) | function $valueChange$1($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/__snapshots__/dom.expected/template.js
function $setup (line 10) | function $setup($scope) {
function $valueChange (line 15) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-member-modifier-value/test.ts
function type (line 3) | function type(value: string) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-modifier-value/__snapshots__/dom.expected/template.hydrate.js
function $valueChange (line 7) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-modifier-value/__snapshots__/dom.expected/template.js
function $setup (line 10) | function $setup($scope) {
function $valueChange (line 14) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-input-number-modifier-value/test.ts
function type (line 3) | function type(value: string) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-input-value-spread/__snapshots__/dom.expected/template.hydrate.js
function $valueChange (line 16) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-input-value-spread/__snapshots__/dom.expected/template.js
function $setup (line 13) | function $setup($scope) {
function $valueChange (line 17) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-input-value-spread/test.ts
function type (line 3) | function type(value: string) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-input-value/__snapshots__/dom.expected/template.hydrate.js
function $valueChange (line 6) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-input-value/__snapshots__/dom.expected/template.js
function $setup (line 9) | function $setup($scope) {
function $valueChange (line 13) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-input-value/test.ts
function type (line 3) | function type(value: string) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/__snapshots__/dom.expected/template.hydrate.js
function $valueChange (line 29) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/__snapshots__/dom.expected/template.js
function $setup (line 33) | function $setup($scope) {
function $valueChange (line 37) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-select-dynamic-spread/test.ts
function selectC (line 3) | function selectC(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-select-multiple-value-number/__snapshots__/dom.expected/template.hydrate.js
function $valueChange (line 6) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-select-multiple-value-number/__snapshots__/dom.expected/template.js
function $setup (line 14) | function $setup($scope) {
function $valueChange (line 18) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-select-multiple-value-number/test.ts
function select0 (line 3) | function select0(container: Element) {
function select1 (line 7) | function select1(container: Element) {
function select2 (line 11) | function select2(container: Element) {
function reset (line 15) | function reset(container: Element) {
function selectIndex (line 19) | function selectIndex(container: Element, index: number) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-select-mutated-option/__snapshots__/dom.expected/template.hydrate.js
function $valueChange (line 28) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-select-mutated-option/__snapshots__/dom.expected/template.js
function $setup (line 33) | function $setup($scope) {
function $valueChange (line 37) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-select-mutated-option/test.ts
function clickAdd (line 3) | function clickAdd(container: Element) {
function clickRemove (line 7) | function clickRemove(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/__snapshots__/dom.expected/template.hydrate.js
function $valueChange (line 21) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/__snapshots__/dom.expected/template.js
function $setup (line 14) | function $setup($scope) {
function $valueChange (line 18) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-select-spread/test.ts
function selectC (line 3) | function selectC(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-select-value-number/__snapshots__/dom.expected/template.hydrate.js
function $valueChange (line 6) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-select-value-number/__snapshots__/dom.expected/template.js
function $setup (line 14) | function $setup($scope) {
function $valueChange (line 18) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-select-value-number/test.ts
function select0 (line 3) | function select0(container: Element) {
function select1 (line 7) | function select1(container: Element) {
function select2 (line 11) | function select2(container: Element) {
function reset (line 15) | function reset(container: Element) {
function selectIndex (line 19) | function selectIndex(container: Element, index: number) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-select/__snapshots__/dom.expected/template.hydrate.js
function $valueChange (line 6) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-select/__snapshots__/dom.expected/template.js
function $setup (line 9) | function $setup($scope) {
function $valueChange (line 13) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-select/test.ts
function selectC (line 3) | function selectC(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value-spread/__snapshots__/dom.expected/template.hydrate.js
function $valueChange (line 12) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value-spread/__snapshots__/dom.expected/template.js
function $setup (line 12) | function $setup($scope) {
function $valueChange (line 16) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value-spread/test.ts
function type (line 3) | function type(value: string) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value/__snapshots__/dom.expected/template.hydrate.js
function $valueChange (line 6) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value/__snapshots__/dom.expected/template.js
function $setup (line 9) | function $setup($scope) {
function $valueChange (line 13) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/controllable-textarea-value/test.ts
function type (line 3) | function type(value: string) {
FILE: packages/runtime-tags/src/__tests__/fixtures/counter-intersection/__snapshots__/dom.expected/template.js
function $setup (line 21) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/counter-intersection/test.ts
function clickA (line 3) | function clickA(container: Element) {
function clickB (line 7) | function clickB(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/__snapshots__/dom.expected/tags/my-let.js
function $setup (line 6) | function $setup($scope) {
function $valueChange (line 10) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/__snapshots__/dom.expected/template.js
function $setup (line 17) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/cross-tag-closure/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-child-analyze/tags/hello/transformer.ts
function readFileText (line 13) | function readFileText(tag: types.NodePath<types.MarkoTag>) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-default-value/__snapshots__/dom.expected/template.js
function $setup (line 6) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/__snapshots__/dom.expected/tags/custom-tag.js
function $setup (line 21) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/__snapshots__/dom.expected/template.js
function $setup (line 12) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-args/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-attributes/__snapshots__/dom.expected/tags/custom-tag.js
function $setup (line 17) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-attributes/__snapshots__/dom.expected/template.js
function $setup (line 13) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-attributes/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-single-arg/__snapshots__/dom.expected/tags/custom-tag.js
function $setup (line 14) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-single-arg/__snapshots__/dom.expected/template.js
function $setup (line 8) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-parameters-from-single-arg/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-render-body/__snapshots__/dom.expected/template.js
function $setup (line 6) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-template/__snapshots__/dom.expected/template.js
function $setup (line 4) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-assignment/__snapshots__/dom.expected/tags/counter.js
function $setup (line 12) | function $setup($scope) {
function $valueChange (line 16) | function $valueChange($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-assignment/__snapshots__/dom.expected/template.js
function $setup (line 15) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-expression/__snapshots__/dom.expected/tags/child.js
function $setup (line 5) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-expression/__snapshots__/dom.expected/template.js
function $setup (line 6) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-in-body/__snapshots__/dom.expected/tags/child.js
function $setup (line 6) | function $setup($scope) {
function $_return (line 10) | function $_return($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-in-body/__snapshots__/dom.expected/template.js
function $setup (line 10) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-intersection/__snapshots__/dom.expected/tags/child.js
function $setup (line 13) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-intersection/__snapshots__/dom.expected/template.js
function $setup (line 8) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-multiple/__snapshots__/dom.expected/tags/child.js
function $setup (line 7) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-var-multiple/__snapshots__/dom.expected/template.js
function $setup (line 6) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-var/__snapshots__/dom.expected/tags/child.js
function $setup (line 12) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/custom-tag-var/__snapshots__/dom.expected/template.js
function $setup (line 6) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/debug-tag/__snapshots__/dom.expected/template.js
function $setup (line 10) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/declared-alias-closure/__snapshots__/dom.expected/template.js
function $setup (line 28) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/define-tag-circular/__snapshots__/dom.expected/template.js
function $setup (line 16) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/define-tag-for-attribute-tag/__snapshots__/dom.expected/template.js
function $setup (line 17) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/define-tag-for-attribute-tag/test.ts
function click (line 3) | function click(container: Element) {
FILE: packages/runtime-tags/src/__tests__/fixtures/define-tag-no-content/__snapshots__/dom.expected/template.js
function $setup (line 13) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/define-tag-object/__snapshots__/dom.expected/template.js
function $setup (line 16) | function $setup($scope) {
FILE: packages/runtime-tags/src/__tests__/fixtures/define-tag-object/test.ts
function click (line 3) | func
Copy disabled (too large)
Download .json
Condensed preview — 11461 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (10,420K chars).
[
{
"path": ".browserslistrc",
"chars": 34,
"preview": "extends @ebay/browserslist-config\n"
},
{
"path": ".c8rc.json",
"chars": 367,
"preview": "{\n \"all\": true,\n \"excludeAfterRemap\": true,\n \"parserPlugins\": [\"objectRestSpread\", \"typescript\"],\n \"reporter\": [\"tex"
},
{
"path": ".changeset/README.md",
"chars": 510,
"preview": "# Changesets\n\nHello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that wo"
},
{
"path": ".changeset/config.json",
"chars": 419,
"preview": "{\n \"$schema\": \"https://unpkg.com/@changesets/config@1.7.0/schema.json\",\n \"changelog\": [\"@changesets/changelog-github\","
},
{
"path": ".gitattributes",
"chars": 92,
"preview": "package-lock.json -diff\npackages/runtime-class/src/node_modules/** linguist-generated=false\n"
},
{
"path": ".github/CODE_OF_CONDUCT.md",
"chars": 2343,
"preview": "# Code of Conduct\n\nThis project adheres to the [eBay Code of Conduct](https://github.com/eBay/.github/blob/main/CODE_OF_"
},
{
"path": ".github/CONTRIBUTING.md",
"chars": 13557,
"preview": "# Contribution tips and guidelines\n\n:+1::tada: We're excited you want to contribute! Read on! :tada::+1:\n\n[Questions](#i"
},
{
"path": ".github/ISSUE_TEMPLATE/Bug_report.md",
"chars": 1238,
"preview": "---\nname: \"\\U0001F41BBug report\"\nabout: Something isn't working right\ntitle: \"\"\nlabels: \"type:unverified bug\"\n---\n\n### M"
},
{
"path": ".github/ISSUE_TEMPLATE/Feature_request.md",
"chars": 590,
"preview": "---\nname: \"\\U0001F680Feature request\"\nabout: Suggest an idea for this project\ntitle: \"\"\nlabels: \"type:feature\"\n---\n\n### "
},
{
"path": ".github/ISSUE_TEMPLATE/Support_question.md",
"chars": 447,
"preview": "---\nname: \"\\U00002753Support Question\"\nabout: If you have a question, please check out our Discord or StackOverflow!\ntit"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 662,
"preview": "<!--- Provide a general summary of your changes in the Title above -->\n\n## Description\n\n<!--- Describe your changes in d"
},
{
"path": ".github/workflows/ci.yml",
"chars": 2235,
"preview": "name: CI\n\non:\n pull_request:\n types: [opened, synchronize]\n push:\n branches: [main, v3, v4]\n\nconcurrency:\n grou"
},
{
"path": ".gitignore",
"chars": 1444,
"preview": "# Build\ndist\n*.marko.js\n*actual*\n*.tsbuildinfo\n\n### Node ###\n\n# Logs\nlogs\n*.log*\n\n# Diagnostic reports (https://nodejs.o"
},
{
"path": ".husky/.gitignore",
"chars": 2,
"preview": "_\n"
},
{
"path": ".husky/pre-commit",
"chars": 105,
"preview": "npm exec -- lint-staged && npm run build && npm run build:sizes && git add .sizes.json && git add .sizes\n"
},
{
"path": ".lintstagedrc.json",
"chars": 209,
"preview": "{\n \"$schema\": \"https://json.schemastore.org/lintstagedrc.schema.json\",\n \"*.{ts,js}\": [\"eslint --fix\", \"prettier --writ"
},
{
"path": ".mocharc.json",
"chars": 214,
"preview": "{\n \"timeout\": 5000,\n \"enable-source-maps\": true,\n \"require\": [\"~ts\", \"mocha-snap\"],\n \"spec\": [\"packages/*/@(src|test"
},
{
"path": ".prettierignore",
"chars": 229,
"preview": "__snapshots__\n!packages/runtime-class/src/node_modules\n.cache\n.nvm\n.sizes\n.sizes.json\n.vscode\n*actual*\n*expected*\n~*\nCHA"
},
{
"path": ".prettierrc.json",
"chars": 105,
"preview": "{\n \"$schema\": \"https://json.schemastore.org/prettierrc\",\n \"plugins\": [\"prettier-plugin-packagejson\"]\n}\n"
},
{
"path": ".sizes/comments.csr/entry.js",
"chars": 2262,
"preview": "// size: 694 (min) 380 (brotli)\nconst $if_content__comment_comments = _if_closure(4, 0, ($scope) =>\n $input_comments$"
},
{
"path": ".sizes/comments.ssr/entry.js",
"chars": 387,
"preview": "// size: 130 (min) 110 (brotli)\nconst $for_content__open__script = _script(\"a0\", ($scope) =>\n _on($scope.c, \"click\", "
},
{
"path": ".sizes/counter.csr/entry.js",
"chars": 415,
"preview": "// size: 173 (min) 148 (brotli)\nconst $clickCount__script = _script(\"a0\", ($scope) =>\n _on($scope.a, \"click\", functio"
},
{
"path": ".sizes/counter.ssr/entry.js",
"chars": 294,
"preview": "// size: 96 (min) 100 (brotli)\nconst $clickCount__script = _script(\"a0\", ($scope) =>\n _on($scope.a, \"click\", function"
},
{
"path": ".sizes/dom.js",
"chars": 68383,
"preview": "// size: 21238 (min) 7981 (brotli)\nvar empty = [],\n rest = Symbol();\nfunction attrTag(attrs) {\n return (\n (attrs[Sy"
},
{
"path": ".sizes/name-cache.json",
"chars": 4604,
"preview": "{\"vars\":{\"props\":{\"$empty\":\"e\",\"$rest\":\"t\",\"$attrTag\":\"n\",\"$attrTags\":\"r\",\"$attrTagIterator\":\"o\",\"$_assert_hoist\":\"i\",\"$"
},
{
"path": ".sizes.json",
"chars": 1336,
"preview": "{\n \"examples\": {\n \"counter\": \"./packages/runtime-tags/src/__tests__/fixtures/basic-counter/template.marko\",\n \"com"
},
{
"path": "LICENSE",
"chars": 1089,
"preview": "The MIT License (MIT)\n\nCopyright 2024 eBay Inc. and contributors\n\nPermission is hereby granted, free of charge, to any p"
},
{
"path": "SECURITY.md",
"chars": 1224,
"preview": "# Security Policy\n\n## Reporting a Vulnerability\n\nPlease report security issues **privately** using GitHub’s **Report a v"
},
{
"path": "babel.config.js",
"chars": 483,
"preview": "module.exports = (api) => ({\n retainLines: true,\n presets: [\n [\n \"@babel/env\",\n {\n loose: true,\n "
},
{
"path": "cspell.json",
"chars": 6462,
"preview": "{\n \"version\": \"0.2\",\n \"$schema\": \"https://raw.githubusercontent.com/streetsidesoftware/cspell/master/cspell.schema.jso"
},
{
"path": "eslint.config.mjs",
"chars": 1430,
"preview": "import eslint from \"@eslint/js\";\nimport sortImportPlugin from \"eslint-plugin-simple-import-sort\";\nimport globals from \"g"
},
{
"path": "package.json",
"chars": 3572,
"preview": "{\n \"name\": \"marko-project\",\n \"private\": true,\n \"workspaces\": [\n \"./packages/*\"\n ],\n \"scripts\": {\n \"@ci:build\""
},
{
"path": "packages/compiler/CHANGELOG.md",
"chars": 119278,
"preview": "# Change Log\n\n## 5.39.62\n\n### Patch Changes\n\n- [#3133](https://github.com/marko-js/marko/pull/3133) [`1ca1a71`](https://"
},
{
"path": "packages/compiler/babel-types.d.ts",
"chars": 245,
"preview": "import { Scope } from \"./dist/traverse\";\nexport * from \"./dist/traverse\";\nexport * from \"./dist/types\";\nexport { Scope }"
},
{
"path": "packages/compiler/babel-utils.d.ts",
"chars": 10584,
"preview": "import type { Config, types as t } from \"@marko/compiler\";\n\nexport interface AttributeDefinition {\n allowExpressions: b"
},
{
"path": "packages/compiler/babel-utils.js",
"chars": 48,
"preview": "module.exports = require(\"./dist/babel-utils\");\n"
},
{
"path": "packages/compiler/config.d.ts",
"chars": 1192,
"preview": "declare const Config: {\n output?: \"html\" | \"dom\" | \"hydrate\" | \"migrate\" | \"source\";\n errorRecovery?: boolean;\n apply"
},
{
"path": "packages/compiler/config.js",
"chars": 51,
"preview": "module.exports = require(\"./dist/config\").default;\n"
},
{
"path": "packages/compiler/index.d.ts",
"chars": 1983,
"preview": "import { Diagnostic, TaglibLookup } from \"@marko/compiler/babel-utils\";\nimport { SourceMap } from \"magic-string\";\n\nimpor"
},
{
"path": "packages/compiler/internal/babel/index.ts",
"chars": 831,
"preview": "// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// <reference path=\"./modules.d.ts\" />\n\ndeclare m"
},
{
"path": "packages/compiler/internal/babel/modules.d.ts",
"chars": 360,
"preview": "declare module \"@babel/core\";\ndeclare module \"@babel/types\";\ndeclare module \"@babel/parser\";\ndeclare module \"@babel/trav"
},
{
"path": "packages/compiler/internal/babel/package.json",
"chars": 90,
"preview": "{\n \"main\": \"index.ts\",\n \"types\": \"index.ts\",\n \"main:override\": \"../../dist/babel.js\"\n}\n"
},
{
"path": "packages/compiler/modules.d.ts",
"chars": 285,
"preview": "export const cwd: string;\nexport const root: string;\nexport const pkg: null | Record<string, unknown>;\nexport const requ"
},
{
"path": "packages/compiler/modules.js",
"chars": 852,
"preview": "\"use strict\";\n\nif (process.env.BUNDLE || typeof document === \"object\") {\n exports.cwd = \"/\";\n exports.root = \"/\";\n ex"
},
{
"path": "packages/compiler/package.json",
"chars": 3173,
"preview": "{\n \"name\": \"@marko/compiler\",\n \"version\": \"5.39.62\",\n \"description\": \"Marko template to JS compiler.\",\n \"keywords\": "
},
{
"path": "packages/compiler/register.d.ts",
"chars": 256,
"preview": "import { Config } from \".\";\n\ntype Extensions = Partial<typeof require.extensions>;\nexport default function register(\n c"
},
{
"path": "packages/compiler/register.js",
"chars": 45,
"preview": "module.exports = require(\"./dist/register\");\n"
},
{
"path": "packages/compiler/scripts/bundle-babel.mts",
"chars": 536,
"preview": "import path from \"node:path\";\n\nimport { build } from \"rolldown\";\n\nawait Promise.all(\n ([\"browser\", \"node\"] as const).ma"
},
{
"path": "packages/compiler/scripts/types/babel-traverse.js",
"chars": 3392,
"preview": "/**********************************************************************************************\nSome of the source code "
},
{
"path": "packages/compiler/scripts/types/babel-types.js",
"chars": 19086,
"preview": "/**********************************************************************************************\nSome of the source code "
},
{
"path": "packages/compiler/scripts/types.js",
"chars": 284,
"preview": "import fs from \"fs\";\n\nimport babelTraverseCode from \"./types/babel-traverse\";\nimport babelTypesCode from \"./types/babel-"
},
{
"path": "packages/compiler/src/babel-plugin/file.js",
"chars": 375,
"preview": "import { File } from \"@marko/compiler/internal/babel\";\n\nimport { buildCodeFrameError } from \"../util/build-code-frame\";\n"
},
{
"path": "packages/compiler/src/babel-plugin/index.js",
"chars": 13560,
"preview": "import {\n pluginTransformTypeScript,\n traverse,\n types as t,\n} from \"@marko/compiler/internal/babel\";\nimport path fro"
},
{
"path": "packages/compiler/src/babel-plugin/parser.js",
"chars": 18534,
"preview": "import {\n getTagDefForTagName,\n parseArgs,\n parseExpression,\n parseParams,\n parseStatements,\n parseTemplateLiteral"
},
{
"path": "packages/compiler/src/babel-plugin/plugins/migrate.js",
"chars": 1638,
"preview": "import { getTagDef, getTagDefForTagName } from \"@marko/compiler/babel-utils\";\nimport { types as t } from \"@marko/compile"
},
{
"path": "packages/compiler/src/babel-plugin/plugins/transform.js",
"chars": 1736,
"preview": "import { getTagDef, getTagDefForTagName } from \"@marko/compiler/babel-utils\";\nimport { types as t } from \"@marko/compile"
},
{
"path": "packages/compiler/src/babel-plugin/util/plugin-hooks.js",
"chars": 521,
"preview": "// Utilities for executing multi step compiler hooks (migrators & transformers).\n\nexport function enter(plugin, ...args)"
},
{
"path": "packages/compiler/src/babel-utils/assert.js",
"chars": 2555,
"preview": "export function assertAllowedAttributes(path, allowed) {\n let i = 0;\n for (const attr of path.node.attributes) {\n i"
},
{
"path": "packages/compiler/src/babel-utils/compute.js",
"chars": 5967,
"preview": "/**\n * @param {import(\"@babel/types\").Node} node\n */\nexport function computeNode(node) {\n switch (node.type) {\n case"
},
{
"path": "packages/compiler/src/babel-utils/diagnostics.js",
"chars": 1452,
"preview": "export const DiagnosticType = {\n Error: \"error\",\n Warning: \"warning\",\n Deprecation: \"deprecation\",\n Suggestion: \"sug"
},
{
"path": "packages/compiler/src/babel-utils/get-file.js",
"chars": 475,
"preview": "let currentFile;\n\nexport function getFile() {\n if (currentFile) {\n return currentFile;\n }\n\n throw new Error(\"Unabl"
},
{
"path": "packages/compiler/src/babel-utils/imports.js",
"chars": 3426,
"preview": "import { types as t } from \"@marko/compiler\";\nimport { cwd } from \"@marko/compiler/modules\";\nimport path from \"path\";\nim"
},
{
"path": "packages/compiler/src/babel-utils/index.js",
"chars": 1388,
"preview": "export {\n assertAllowedAttributes,\n assertAttributesOrArgs,\n assertAttributesOrSingleArg,\n assertNoArgs,\n assertNoA"
},
{
"path": "packages/compiler/src/babel-utils/loc.js",
"chars": 2238,
"preview": "const LINE_INDEX_KEY = Symbol();\n\nexport function getLoc(file, index) {\n return findLoc(getLineIndexes(file), 0, index)"
},
{
"path": "packages/compiler/src/babel-utils/parse.js",
"chars": 5308,
"preview": "import { types as t } from \"@marko/compiler\";\nimport {\n parse as babelParse,\n parseExpression as babelParseExpression,"
},
{
"path": "packages/compiler/src/babel-utils/taglib.js",
"chars": 665,
"preview": "const SEEN_TAGS_KEY = Symbol();\n\nexport function getTaglibLookup(file) {\n return file.___taglibLookup;\n}\n\nexport functi"
},
{
"path": "packages/compiler/src/babel-utils/tags.js",
"chars": 9654,
"preview": "import { types as t } from \"@marko/compiler\";\nimport markoModules from \"@marko/compiler/modules\";\nimport { basename, dir"
},
{
"path": "packages/compiler/src/babel-utils/template-string.js",
"chars": 1561,
"preview": "import { types as t } from \"@marko/compiler\";\nimport jsesc from \"jsesc\";\n\nexport function normalizeTemplateString(quasis"
},
{
"path": "packages/compiler/src/config.js",
"chars": 5260,
"preview": "import { pkg } from \"@marko/compiler/modules\";\nimport fs from \"fs\";\n\nconst config = {\n // The default output mode for c"
},
{
"path": "packages/compiler/src/index.js",
"chars": 4984,
"preview": "import { DiagnosticType } from \"@marko/compiler/babel-utils\";\nimport {\n loadPartialConfig,\n loadPartialConfigAsync,\n "
},
{
"path": "packages/compiler/src/register.js",
"chars": 1245,
"preview": "\"use strict\";\n\nconst shouldOptimize = require(\"./util/should-optimize\").default;\nconst compiler = require(\".\");\nconst re"
},
{
"path": "packages/compiler/src/taglib/config.js",
"chars": 81,
"preview": "module.exports = {\n fs: undefined,\n onError: (err) => {\n throw err;\n },\n};\n"
},
{
"path": "packages/compiler/src/taglib/finder/index.js",
"chars": 4583,
"preview": "\"use strict\";\nvar nodePath = require(\"path\");\nvar lassoPackageRoot = require(\"lasso-package-root\");\nvar markoModules = r"
},
{
"path": "packages/compiler/src/taglib/index.js",
"chars": 4001,
"preview": "import markoModules from \"@marko/compiler/modules\";\nimport path from \"path\";\n\nimport tryLoadTranslator from \"../util/try"
},
{
"path": "packages/compiler/src/taglib/loader/Attribute.js",
"chars": 267,
"preview": "\"use strict\";\n\nclass Attribute {\n constructor(name) {\n this.name = name;\n this.type = null;\n this.required = f"
},
{
"path": "packages/compiler/src/taglib/loader/DependencyChain.js",
"chars": 277,
"preview": "\"use strict\";\n\nclass DependencyChain {\n constructor(array) {\n this.array = array || [];\n }\n\n append(str) {\n ret"
},
{
"path": "packages/compiler/src/taglib/loader/Property.js",
"chars": 160,
"preview": "\"use strict\";\n\nclass Property {\n constructor() {\n this.name = null;\n this.type = \"string\";\n this.value = undef"
},
{
"path": "packages/compiler/src/taglib/loader/Tag.js",
"chars": 2296,
"preview": "\"use strict\";\nvar ok = require(\"assert\").ok;\nvar path = require(\"path\");\nvar hasOwnProperty = Object.prototype.hasOwnPro"
},
{
"path": "packages/compiler/src/taglib/loader/Taglib.js",
"chars": 2486,
"preview": "\"use strict\";\nvar ok = require(\"assert\").ok;\nvar path = require(\"path\");\nvar loaders = require(\"./loaders\");\nvar hasOwnP"
},
{
"path": "packages/compiler/src/taglib/loader/Transformer.js",
"chars": 314,
"preview": "\"use strict\";\nvar nextTransformerId = 0;\n\nclass Transformer {\n constructor() {\n this.id = nextTransformerId++;\n t"
},
{
"path": "packages/compiler/src/taglib/loader/cache.js",
"chars": 210,
"preview": "var cache = {};\n\nfunction get(key) {\n return cache[key];\n}\n\nfunction put(key, value) {\n cache[key] = value;\n}\n\nfunctio"
},
{
"path": "packages/compiler/src/taglib/loader/index.js",
"chars": 1082,
"preview": "var cache = require(\"./cache\");\n\nvar DependencyChain = require(\"./DependencyChain\");\nvar loaders = require(\"./loaders\");"
},
{
"path": "packages/compiler/src/taglib/loader/json-file-reader.js",
"chars": 482,
"preview": "var stripJsonComments = require(\"@luxass/strip-json-comments\").strip;\nvar taglibConfig = require(\"../config\");\nvar fsRea"
},
{
"path": "packages/compiler/src/taglib/loader/loadAttributeFromProps.js",
"chars": 5856,
"preview": "\"use strict\";\n\nvar assert = require(\"assert\");\nvar raptorRegexp = require(\"raptor-regexp\");\nvar createError = require(\"r"
},
{
"path": "packages/compiler/src/taglib/loader/loadAttributes.js",
"chars": 426,
"preview": "var ok = require(\"assert\").ok;\nvar loaders = require(\"./loaders\");\n\nmodule.exports = function loadAttributes(value, pare"
},
{
"path": "packages/compiler/src/taglib/loader/loadTagFromFile.js",
"chars": 638,
"preview": "var ok = require(\"assert\").ok;\nvar cache = require(\"./cache\");\nvar jsonFileReader = require(\"./json-file-reader\");\nvar l"
},
{
"path": "packages/compiler/src/taglib/loader/loadTagFromProps.js",
"chars": 15148,
"preview": "\"use strict\";\n\nvar ok = require(\"assert\").ok;\nvar nodePath = require(\"path\");\nvar createError = require(\"raptor-util/cre"
},
{
"path": "packages/compiler/src/taglib/loader/loadTaglibFromDir.js",
"chars": 809,
"preview": "var ok = require(\"assert\").ok;\nvar nodePath = require(\"path\");\nvar cache = require(\"./cache\");\nvar DependencyChain = req"
},
{
"path": "packages/compiler/src/taglib/loader/loadTaglibFromFile.js",
"chars": 706,
"preview": "var ok = require(\"assert\").ok;\nvar cache = require(\"./cache\");\nvar jsonFileReader = require(\"./json-file-reader\");\nvar l"
},
{
"path": "packages/compiler/src/taglib/loader/loadTaglibFromProps.js",
"chars": 12429,
"preview": "\"use strict\";\n\nvar ok = require(\"assert\").ok;\nvar nodePath = require(\"path\");\nvar createError = require(\"raptor-util/cre"
},
{
"path": "packages/compiler/src/taglib/loader/loaders.js",
"chars": 950,
"preview": "var types = require(\"./types\");\n\nfunction isSupportedAttributeProperty(propertyName) {\n return exports.loadAttributeFro"
},
{
"path": "packages/compiler/src/taglib/loader/property-handlers.js",
"chars": 1899,
"preview": "\"use strict\";\n\nconst { hasOwnProperty } = Object.prototype;\nconst taglibConfig = require(\"../config\");\n\nfunction removeD"
},
{
"path": "packages/compiler/src/taglib/loader/scanTagsDir.js",
"chars": 5274,
"preview": "\"use strict\";\n\nconst nodePath = require(\"path\");\nconst taglibConfig = require(\"../config\");\nconst jsonFileReader = requi"
},
{
"path": "packages/compiler/src/taglib/loader/types.js",
"chars": 204,
"preview": "exports.Taglib = require(\"./Taglib\");\nexports.Tag = require(\"./Tag\");\nexports.Attribute = require(\"./Attribute\");\nexport"
},
{
"path": "packages/compiler/src/taglib/lookup/index.js",
"chars": 7679,
"preview": "\"use strict\";\n\nvar nodePath = require(\"path\");\nvar ok = require(\"assert\").ok;\nvar extend = require(\"raptor-util/extend\")"
},
{
"path": "packages/compiler/src/taglib/marko-html.json",
"chars": 49776,
"preview": "{\n \"taglib-id\": \"marko-html\",\n \"<a>\": {\n \"@download\": \"#html-download\",\n \"@href\": \"#html-href\",\n \"@hreflang\":"
},
{
"path": "packages/compiler/src/taglib/marko-math.json",
"chars": 2225,
"preview": "{\n \"taglib-id\": \"marko-math\",\n \"<math>\": { \"html\": true, \"htmlType\": \"math\" },\n \"<maction>\": { \"html\": true, \"htmlTyp"
},
{
"path": "packages/compiler/src/taglib/marko-svg.json",
"chars": 3186,
"preview": "{\n \"taglib-id\": \"marko-svg\",\n \"<animate>\": { \"html\": true, \"htmlType\": \"svg\" },\n \"<animateColor>\": { \"html\": true, \"h"
},
{
"path": "packages/compiler/src/util/build-code-frame.js",
"chars": 2769,
"preview": "import { codeFrameColumns } from \"@marko/compiler/internal/babel\";\nimport { cwd } from \"@marko/compiler/modules\";\nimport"
},
{
"path": "packages/compiler/src/util/merge-errors.js",
"chars": 1027,
"preview": "import { stripAnsi } from \"./strip-ansi\";\n\nconst indent = \" \";\nconst compileErrorPrefix = `CompileError: \\n`;\nconst c"
},
{
"path": "packages/compiler/src/util/quick-hash.js",
"chars": 767,
"preview": "/**\n * Outputs a noncryptographic hash as a safe integer (<= Number.MAX_SAFE_INTEGER).\n */\nexport class Hash {\n a = 0xd"
},
{
"path": "packages/compiler/src/util/should-optimize.js",
"chars": 225,
"preview": "export default function shouldOptimize() {\n return process.env.MARKO_DEBUG\n ? process.env.MARKO_DEBUG === \"false\" ||"
},
{
"path": "packages/compiler/src/util/strip-ansi.js",
"chars": 217,
"preview": "const ansiReg =\n // eslint-disable-next-line no-control-regex\n /([\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)"
},
{
"path": "packages/compiler/src/util/try-load-translator.js",
"chars": 355,
"preview": "import markoModules from \"@marko/compiler/modules\";\n\nimport config from \"../config\";\nconst cache = {};\n\nexport default f"
},
{
"path": "packages/runtime-class/CHANGELOG.md",
"chars": 266054,
"preview": "# Change Log\n\n## 5.38.33\n\n### Patch Changes\n\n- [#3135](https://github.com/marko-js/marko/pull/3135) [`ae034a5`](https://"
},
{
"path": "packages/runtime-class/README.md",
"chars": 4764,
"preview": "<div align=\"center\">\n\n# [<img alt=\"Marko\" src=\"https://raw.githubusercontent.com/marko-js/branding/master/marko-logo-med"
},
{
"path": "packages/runtime-class/bin/markoc",
"chars": 44,
"preview": "#!/usr/bin/env node\nrequire(\"./markoc.js\");\n"
},
{
"path": "packages/runtime-class/bin/markoc.js",
"chars": 10085,
"preview": "// TODO: Should deprecate and move into marko/cli\n\nvar fs = require(\"fs\");\nvar nodePath = require(\"path\");\nvar cwd = pro"
},
{
"path": "packages/runtime-class/browser-refresh.js",
"chars": 296,
"preview": "// This is a noop in Marko 5 and should eventually be removed.\n// In Marko 5 `browser-refresh` is automatically enabled "
},
{
"path": "packages/runtime-class/compiler-browser.marko",
"chars": 619,
"preview": "<module-code(function(require, opts) {\n var file = `\"./${opts.optimize ? \"dist\" : \"src\"}/compiler\"`;\n\n if (opts.mo"
},
{
"path": "packages/runtime-class/compiler.js",
"chars": 160,
"preview": "var isDebug = require(\"./env\").isDebug;\n\nif (isDebug) {\n module.exports = require(\"./src/compiler\");\n} else {\n module."
},
{
"path": "packages/runtime-class/components-browser.marko",
"chars": 663,
"preview": "<module-code(function(require, opts) {\n var file = `\"./${opts.optimize ? \"dist\" : \"src\"}/runtime/components\"`;\n\n i"
},
{
"path": "packages/runtime-class/components.js",
"chars": 180,
"preview": "var isDebug = require(\"./env\").isDebug;\n\nif (isDebug) {\n module.exports = require(\"./src/runtime/components\");\n} else {"
},
{
"path": "packages/runtime-class/docs/10-awesome-marko-features.md",
"chars": 8123,
"preview": "<a href=\"#\">\n <img src=\"https://cdn-images-1.medium.com/max/1000/1*Cmy6UutD5-ogL8dr1DySMQ.png\" alt=\"Marko logo\" width=\""
},
{
"path": "packages/runtime-class/docs/body-content.md",
"chars": 9061,
"preview": "# Body content\n\nWe're used to passing body content to HTML tags. When you do this, the tag has control over where and wh"
},
{
"path": "packages/runtime-class/docs/class-components.md",
"chars": 37384,
"preview": "# Class Components\n\nMarko makes it easy to create user interface components to use as building blocks for web pages and "
},
{
"path": "packages/runtime-class/docs/cloudflare-workers.md",
"chars": 1366,
"preview": "# Marko + Cloudflare Workers\n\nSee the [the cloudflare sample](https://github.com/marko-js/examples/tree/master/examples/"
},
{
"path": "packages/runtime-class/docs/compiler.md",
"chars": 19535,
"preview": "# Compiler\n\n> **Warning**:\n> The compiler API and hooks are not terribly stable. They’re intended for advanced integrati"
},
{
"path": "packages/runtime-class/docs/concise.md",
"chars": 2627,
"preview": "# Concise syntax\n\nMarko's concise syntax is very similar to the HTML syntax, except it's more... concise. Essentially, y"
},
{
"path": "packages/runtime-class/docs/conditionals-and-lists.md",
"chars": 3503,
"preview": "# Conditionals and Lists\n\nWhile HTML itself does not support conditionally displaying elements or repeating elements, it"
},
{
"path": "packages/runtime-class/docs/core-tags.md",
"chars": 9927,
"preview": "# Core tags and attributes\n\nMuch like [HTML has its own native tags](https://developer.mozilla.org/en-US/docs/Web/HTML/E"
},
{
"path": "packages/runtime-class/docs/custom-tags.md",
"chars": 4909,
"preview": "# Custom tags\n\nCustom tags allow you to break up your application UI into encapsulated, reusable components.\n\n## Your fi"
},
{
"path": "packages/runtime-class/docs/editor-plugins.md",
"chars": 1169,
"preview": "# Editor Plugins\n\n## Visual Studio Code\n\n[Documentation](https://marketplace.visualstudio.com/items?itemName=Marko-JS.ma"
},
{
"path": "packages/runtime-class/docs/events.md",
"chars": 3736,
"preview": "# Events\n\nMarko’s event API supports:\n\n- [Browser events](https://developer.mozilla.org/en-US/docs/Web/API/Document_Obje"
},
{
"path": "packages/runtime-class/docs/express.md",
"chars": 3113,
"preview": "# Marko + Express\n\n## Quick Start\n\n```sh\nnpm init marko -- --template vite-express\n# Or `npx create-marko --template vit"
},
{
"path": "packages/runtime-class/docs/fastify.md",
"chars": 1994,
"preview": "# Marko + Fastify\n\n## Quick Start\n\n```terminal\nnpm init marko -- --template vite-fastify\n```\n\nSee the [the fastify sampl"
},
{
"path": "packages/runtime-class/docs/getting-started.md",
"chars": 2723,
"preview": "# Getting started\n\n## Setup\n\n### Marko Run (Recommended)\n\n[Marko Run](https://github.com/marko-js/run) makes it easy to "
},
{
"path": "packages/runtime-class/docs/http.md",
"chars": 906,
"preview": "# Marko + HTTP Server\n\nSee the [the http sample](https://github.com/marko-js/examples/tree/master/examples/vite-http)\npr"
},
{
"path": "packages/runtime-class/docs/installing.md",
"chars": 2235,
"preview": "# Installation\n\n## Trying out Marko\n\nIf you just want to play around with Marko in the browser, head on over to our [Try"
},
{
"path": "packages/runtime-class/docs/koa.md",
"chars": 851,
"preview": "# Marko + Koa\n\nSee the [the koa sample](https://github.com/marko-js/examples/tree/master/examples/vite-koa)\nproject for "
},
{
"path": "packages/runtime-class/docs/lasso.md",
"chars": 6535,
"preview": "# Marko + Lasso\n\nThe [lasso-marko](https://github.com/lasso-js/lasso-marko) plugin for [Lasso.js](https://github.com/las"
},
{
"path": "packages/runtime-class/docs/marko-5-upgrade.md",
"chars": 2055,
"preview": "# Upgrading to Marko 5\n\n## Step 0 - Ensure you're in a working state on the latest version of Marko 4\n\nBefore we start, "
},
{
"path": "packages/runtime-class/docs/marko-json.md",
"chars": 7343,
"preview": "# `marko.json` & `marko-tag.json`\n\nMarko supports configuration files for validation, enabling experimental features, an"
},
{
"path": "packages/runtime-class/docs/marko-vs-react.md",
"chars": 25206,
"preview": "# Marko vs React: An In-depth Look\n\n<a href=\"https://hackernoon.com/marko-vs-react-an-in-depth-look-767de0a5f9a6\">\n <im"
},
{
"path": "packages/runtime-class/docs/redux.md",
"chars": 1357,
"preview": "# Redux + Marko\n\nSee the [`marko-redux` sample project](https://github.com/marko-js/examples/tree/master/examples/redux)"
},
{
"path": "packages/runtime-class/docs/rendering.md",
"chars": 9436,
"preview": "# Rendering\n\nTo render a Marko view, you need to `import` it.\n\n_example.js_\n\n```js\nimport FancyButton from \"./components"
},
{
"path": "packages/runtime-class/docs/rollup.md",
"chars": 12229,
"preview": "# Marko + Rollup\n\nThis is Marko’s official integration plugin for [the Rollup bundler](https://rollupjs.org/).\n\n## Insta"
},
{
"path": "packages/runtime-class/docs/state.md",
"chars": 5091,
"preview": "# State\n\nThe output of a component is based on input properties passed from its parent as attributes. However, a compone"
},
{
"path": "packages/runtime-class/docs/structure.json",
"chars": 930,
"preview": "[\n {\n \"title\": \"Guides\",\n \"docs\": [\n \"Installing\",\n \"Getting started\",\n \"Conditionals and lists\",\n"
},
{
"path": "packages/runtime-class/docs/styles.md",
"chars": 1171,
"preview": "# Styles\n\nBoth HTML and Marko provide support for `<style>` tags. However, Marko also provides a special syntax (called "
},
{
"path": "packages/runtime-class/docs/syntax.md",
"chars": 16553,
"preview": "# Syntax\n\nMarko is HTML _re-imagined_ as a language for building dynamic and reactive user interfaces.\nJust about any va"
},
{
"path": "packages/runtime-class/docs/troubleshooting-streaming.md",
"chars": 3856,
"preview": "# Troubleshooting HTTP Streams\n\n[The way Marko streams HTML](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/T"
},
{
"path": "packages/runtime-class/docs/typescript.md",
"chars": 10815,
"preview": "# TypeScript in Marko\n\n> **Note:** Types are supported in Marko v5.22.7+ and Marko v4.24.6+\n\nMarko’s TypeScript support "
},
{
"path": "packages/runtime-class/docs/vite.md",
"chars": 2939,
"preview": "# Marko + Vite\n\n# Installation\n\n```console\nnpm install @marko/vite vite\n```\n\n# Example config\n\n```javascript\nimport { de"
},
{
"path": "packages/runtime-class/docs/webpack.md",
"chars": 7132,
"preview": "# Marko + Webpack\n\n# Installation\n\n> `@marko/webpack` >= 7 Only supports Marko 5+.\n> For Marko 4 support use `@marko/web"
},
{
"path": "packages/runtime-class/docs/why-is-marko-fast.md",
"chars": 8702,
"preview": "# Why is Marko Fast?\n\n<a href=\"https://medium.com/@psteeleidem/why-is-marko-fast-a20796cb8ae3\">\n <img src=\"https://user"
},
{
"path": "packages/runtime-class/env.js",
"chars": 222,
"preview": "var env = process.env || {};\nvar NODE_ENV = env.NODE_ENV;\nvar MARKO_DEBUG = env.MARKO_DEBUG;\n\nexports.isDebug = !(MARKO_"
},
{
"path": "packages/runtime-class/helpers/README.md",
"chars": 192,
"preview": "# Marko Helpers\n\nThis directory contains helpers that were deprecated in Marko v3. Marko v4/5 no longer adds these helpe"
},
{
"path": "packages/runtime-class/helpers/empty.js",
"chars": 101,
"preview": "var notEmpty = require(\"./notEmpty\");\nmodule.exports = function empty(o) {\n return !notEmpty(o);\n};\n"
},
{
"path": "packages/runtime-class/helpers/notEmpty.js",
"chars": 191,
"preview": "module.exports = function (o) {\n if (o == null) {\n return false;\n } else if (Array.isArray(o)) {\n return !!o.len"
},
{
"path": "packages/runtime-class/index-browser.marko",
"chars": 610,
"preview": "<module-code(function(require, opts) {\n var file = `\"./${opts.optimize ? \"dist\" : \"src\"}\"`;\n\n if (opts.modules ==="
},
{
"path": "packages/runtime-class/index.d.ts",
"chars": 16399,
"preview": "import \"./tags-html\";\n\ndeclare module \"*.marko\" {\n const template: Marko.Template;\n export default template;\n}\n\ndeclar"
},
{
"path": "packages/runtime-class/index.js",
"chars": 144,
"preview": "var isDebug = require(\"./env\").isDebug;\n\nif (isDebug) {\n module.exports = require(\"./src/\");\n} else {\n module.exports "
},
{
"path": "packages/runtime-class/legacy-components-browser.marko",
"chars": 670,
"preview": "<module-code(function(require, opts) {\n var file = `\"./${opts.optimize ? \"dist\" : \"src\"}/runtime/components/legacy\"`;"
},
{
"path": "packages/runtime-class/legacy-components.js",
"chars": 194,
"preview": "var isDebug = require(\"./env\").isDebug;\n\nif (isDebug) {\n module.exports = require(\"./src/runtime/components/legacy\");\n}"
},
{
"path": "packages/runtime-class/node-require.js",
"chars": 227,
"preview": "// TODO: Should deprecate and extract into @marko/register\nvar isDebug = require(\"./env\").isDebug;\n\nif (isDebug) {\n mod"
},
{
"path": "packages/runtime-class/package.json",
"chars": 2458,
"preview": "{\n \"name\": \"marko\",\n \"version\": \"5.38.33\",\n \"description\": \"UI Components + streaming, async, high performance, HTML "
},
{
"path": "packages/runtime-class/src/build.json",
"chars": 22,
"preview": "{\n \"isDebug\": true\n}\n"
},
{
"path": "packages/runtime-class/src/compiler/config.js",
"chars": 1285,
"preview": "var config;\n\nvar g = typeof window === \"undefined\" ? global : window;\n\nif (g.__MARKO_CONFIG) {\n config = g.__MARKO_CONF"
},
{
"path": "packages/runtime-class/src/compiler/index.js",
"chars": 4037,
"preview": "\"use strict\";\n\nvar ok = require(\"assert\").ok;\nvar fs = require(\"fs\");\n\n// eslint-disable-next-line no-constant-binary-ex"
},
{
"path": "packages/runtime-class/src/compiler/modules.js",
"chars": 85,
"preview": "\"use strict\";\n\nif (typeof document === \"undefined\") {\n exports.require = require;\n}\n"
},
{
"path": "packages/runtime-class/src/core-tags/.eslintrc",
"chars": 46,
"preview": "{\n \"env\": {\n \"browser\": true\n }\n}"
},
{
"path": "packages/runtime-class/src/core-tags/components/init-components-tag.js",
"chars": 1883,
"preview": "\"use strict\";\n\nconst INIT_COMPONENTS_KEY = Symbol();\n\nconst addComponentsFromContext =\n require(\"../../runtime/componen"
},
{
"path": "packages/runtime-class/src/core-tags/components/preferred-script-location-tag.js",
"chars": 570,
"preview": "\"use strict\";\n\nfunction forceScriptTagAtThisPoint(out) {\n const writer = out.writer;\n\n out.global.___isLastFlush = tru"
},
{
"path": "packages/runtime-class/src/core-tags/components/preserve-tag.js",
"chars": 52,
"preview": "module.exports = require(\"@internal/preserve-tag\");\n"
},
{
"path": "packages/runtime-class/src/core-tags/core/__flush_here_and_after__.js",
"chars": 1274,
"preview": "const BufferedWriter = require(\"../../runtime/html/BufferedWriter\");\n\nmodule.exports = function __flushHereAndAfter__(in"
},
{
"path": "packages/runtime-class/src/core-tags/core/await/AsyncValue.js",
"chars": 3489,
"preview": "var queueMicrotask = require(\"@internal/set-immediate\").___queueMicrotask;\n\nfunction AsyncValue() {\n /**\n * The data "
},
{
"path": "packages/runtime-class/src/core-tags/core/await/client-reorder-runtime.js",
"chars": 882,
"preview": "function $af(\n id,\n after,\n doc,\n sourceEl,\n targetEl,\n docFragment,\n childNodes,\n i,\n len,\n af,\n) {\n af = $a"
},
{
"path": "packages/runtime-class/src/core-tags/core/await/index.d.marko",
"chars": 388,
"preview": "export type Input<T> = {\n value: readonly [T];\n then?: Marko.AttrTag<{ renderBody: Marko.Body<[Awaited<T>]> }>;\n catc"
},
{
"path": "packages/runtime-class/src/core-tags/core/await/renderer.js",
"chars": 7226,
"preview": "\"use strict\";\n// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complai"
},
{
"path": "packages/runtime-class/src/core-tags/core/await/reorderer-renderer.js",
"chars": 4532,
"preview": "\"use strict\";\n\nvar attrAssignment = require(\"../../../runtime/html/helpers/attr\").a;\n\nmodule.exports = function (input, "
},
{
"path": "packages/runtime-class/src/core-tags/core/script.d.marko",
"chars": 130,
"preview": "/** File for types only, not actual implementation **/\n\nexport interface Input extends Marko.HTML.Script {\n value?(): u"
},
{
"path": "packages/runtime-class/src/index.js",
"chars": 111,
"preview": "\"use strict\";\n\nexports.createOut = require(\"./runtime/createOut\");\nexports.load = require(\"@internal/loader\");\n"
},
{
"path": "packages/runtime-class/src/node-require/browser-refresh.js",
"chars": 556,
"preview": "// eslint-disable-next-line no-constant-condition\nif (\"MARKO_DEBUG\") {\n const browserRefreshClient = require(\"browser-r"
},
{
"path": "packages/runtime-class/src/node-require/hot-reload.js",
"chars": 1091,
"preview": "const fs = require(\"fs\");\nconst path = require(\"path\");\nconst compiler = require(\"../compiler\");\nrequire(\"../runtime/htm"
},
{
"path": "packages/runtime-class/src/node-require/index.js",
"chars": 2904,
"preview": "\"use strict\";\n// eslint-disable-next-line no-constant-binary-expression\nconst complain = \"MARKO_DEBUG\" && require(\"compl"
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-beginComponent/index-browser.js",
"chars": 640,
"preview": "var ComponentDef = require(\"../../../runtime/components/ComponentDef\");\n\nmodule.exports = function beginComponent(\n com"
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-beginComponent/index.js",
"chars": 2434,
"preview": "\"use strict\";\n\nconst ComponentDef = require(\"../../../runtime/components/ComponentDef\");\n\nvar FLAG_WILL_RERENDER_IN_BROW"
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-beginComponent/package.json",
"chars": 198,
"preview": "{\n \"main\": \"./index.js\",\n \"browser\": \"./index-browser.js\",\n \"exports\": {\n \".\": {\n \"worker\": \"./index.js\",\n "
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-define-widget-legacy/index-browser.js",
"chars": 9080,
"preview": "\"use strict\";\n/* jshint newcap:false */\n\nvar BaseState;\nvar BaseComponent;\nvar inherit;\nvar req = require(\"@internal/req"
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-define-widget-legacy/index.js",
"chars": 397,
"preview": "module.exports = function defineWidget(def, renderer) {\n if (def.___isComponent) {\n return def;\n }\n\n if (renderer)"
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-define-widget-legacy/package.json",
"chars": 198,
"preview": "{\n \"main\": \"./index.js\",\n \"browser\": \"./index-browser.js\",\n \"exports\": {\n \".\": {\n \"worker\": \"./index.js\",\n "
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-endComponent/index-browser.js",
"chars": 149,
"preview": "\"use strict\";\n\nmodule.exports = function endComponent(out) {\n out.ee(); // endElement() (also works for VComponent node"
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-endComponent/index.js",
"chars": 406,
"preview": "\"use strict\";\n\nvar ComponentsContext = require(\"../../../runtime/components/ComponentsContext\");\nvar getComponentsContex"
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-endComponent/package.json",
"chars": 198,
"preview": "{\n \"main\": \"./index.js\",\n \"browser\": \"./index-browser.js\",\n \"exports\": {\n \".\": {\n \"worker\": \"./index.js\",\n "
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-entry/index-browser.js",
"chars": 352,
"preview": "require(\"../../../runtime/vdom/marko-namespace\");\nvar registry = require(\"@internal/components-registry\");\n\nexports.getC"
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-entry/index.js",
"chars": 8709,
"preview": "\"use strict\";\nrequire(\"../../../runtime/html/marko-namespace\");\n\nvar warp10 = require(\"warp10\");\nvar w10ToJSON = require"
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-entry/package.json",
"chars": 198,
"preview": "{\n \"main\": \"./index.js\",\n \"browser\": \"./index-browser.js\",\n \"exports\": {\n \".\": {\n \"worker\": \"./index.js\",\n "
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-entry-legacy/index-browser.js",
"chars": 2243,
"preview": "var Component = require(\"../../../runtime/components/Component\");\nvar req = require(\"@internal/require\");\nvar getCompone"
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-entry-legacy/index.js",
"chars": 709,
"preview": "var modernMarko = require(\"@internal/components-entry\");\n\n// legacy api\nexports.defineComponent = require(\"../../../runt"
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-entry-legacy/package.json",
"chars": 198,
"preview": "{\n \"main\": \"./index.js\",\n \"browser\": \"./index-browser.js\",\n \"exports\": {\n \".\": {\n \"worker\": \"./index.js\",\n "
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-registry/index-browser.js",
"chars": 16830,
"preview": "// eslint-disable-next-line no-constant-binary-expression\nvar complain = \"MARKO_DEBUG\" && require(\"complain\");\nvar setIm"
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-registry/index.js",
"chars": 1105,
"preview": "\"use strict\";\nconst copyProps = require(\"raptor-util/copyProps\");\nconst constructorCache = new Map();\nconst BaseServerCo"
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-registry/package.json",
"chars": 198,
"preview": "{\n \"main\": \"./index.js\",\n \"browser\": \"./index-browser.js\",\n \"exports\": {\n \".\": {\n \"worker\": \"./index.js\",\n "
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-util/index-browser.js",
"chars": 4159,
"preview": "var domData = require(\"../../../runtime/components/dom-data\");\nvar componentsByDOMNode = domData.___componentByDOMNode;\n"
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-util/index.js",
"chars": 2042,
"preview": "var getRenderId = require(\"../../../runtime/html/get-render-id\");\n\nvar FLAG_WILL_RERENDER_IN_BROWSER = 1;\n// var FLAG_HA"
},
{
"path": "packages/runtime-class/src/node_modules/@internal/components-util/package.json",
"chars": 198,
"preview": "{\n \"main\": \"./index.js\",\n \"browser\": \"./index-browser.js\",\n \"exports\": {\n \".\": {\n \"worker\": \"./index.js\",\n "
},
{
"path": "packages/runtime-class/src/node_modules/@internal/create-readable/index-browser.js",
"chars": 639,
"preview": "var encoder = new TextEncoder();\nvar noop = function () {};\n\nmodule.exports = function (data) {\n var transformStream = "
},
{
"path": "packages/runtime-class/src/node_modules/@internal/create-readable/index.js",
"chars": 1539,
"preview": "var stream = require(\"stream\");\n\nvar OutgoingMessageProto = require(\"http\").OutgoingMessage.prototype;\nif (String(Outgoi"
},
{
"path": "packages/runtime-class/src/node_modules/@internal/create-readable/package.json",
"chars": 206,
"preview": "{\n \"main\": \"./index.js\",\n \"browser\": \"./index-browser.js\",\n \"exports\": {\n \".\": {\n \"worker\": \"./index-browser."
}
]
// ... and 11261 more files (download for full content)
About this extraction
This page contains the full source code of the marko-js/marko GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 11461 files (8.1 MB), approximately 3.0M tokens, and a symbol index with 3721 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.