+
diff --git a/packages/translator-default/test/fixtures/for-tag/vdom-expected.js b/packages/translator-default/test/fixtures/for-tag/vdom-expected.js
new file mode 100644
index 000000000..5be49e41d
--- /dev/null
+++ b/packages/translator-default/test/fixtures/for-tag/vdom-expected.js
@@ -0,0 +1,142 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("4-NN7Z2_", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ let _i = 0;
+
+ for (const val of arr) {
+ let i = _i++;
+ const _keyScope = `[${i}]`;
+ out.be("div", null, "0" + _keyScope, component, null, 0);
+ out.t(i);
+ out.t(": ");
+ out.t(val);
+ out.ee();
+ out.be("div", null, "1" + _keyScope, component, 0, 0);
+ out.ee();
+ out.be("div", null, "2" + _keyScope, component, 0, 0);
+ out.ee();
+ }
+
+ for (const key in obj) {
+ const val = obj[key];
+ const _keyScope2 = `[${key}]`;
+ out.be("div", null, "3" + _keyScope2, component, null, 0);
+ out.t(key);
+ out.t(": ");
+ out.t(val);
+ out.ee();
+ out.be("div", null, "4" + _keyScope2, component, 0, 0);
+ out.ee();
+ out.be("div", null, "5" + _keyScope2, component, 0, 0);
+ out.ee();
+ }
+
+ for (let _steps = (10 - 0) / 2, _step = 0; _step <= _steps; _step++) {
+ const i = 0 + _step * 2;
+ const _keyScope3 = `[${i}]`;
+ out.be("div", null, "6" + _keyScope3, component, null, 0);
+ out.t(i);
+ out.ee();
+ out.be("div", null, "7" + _keyScope3, component, 0, 0);
+ out.ee();
+ out.be("div", null, "8" + _keyScope3, component, 0, 0);
+ out.ee();
+ }
+
+ let _i2 = 0;
+
+ for (const val of arr) {
+ let i = _i2++;
+ const _keyValue = `@${i}`,
+ _keyScope4 = `[${_keyValue}]`;
+ out.be("div", null, _keyValue, component, null, 0);
+ out.t(i);
+ out.t(": ");
+ out.t(val);
+ out.ee();
+ out.be("div", null, "9" + _keyScope4, component, 0, 0);
+ out.ee();
+ out.be("div", null, `@other-${i}`, component, 0, 0);
+ out.ee();
+ }
+
+ let _i3 = 0;
+ const list = arr;
+
+ for (const val of list) {
+ let i = _i3++;
+ const _keyValue2 = `@${i}`;
+ out.be("div", null, _keyValue2, component, null, 0);
+ out.t(list.length);
+ out.t(": ");
+ out.t(val);
+ out.ee();
+ }
+
+ for (const key in obj) {
+ const val = obj[key];
+ const _keyValue3 = `@${key}`,
+ _keyScope5 = `[${_keyValue3}]`;
+ out.be("div", null, _keyValue3, component, null, 0);
+ out.t(key);
+ out.t(": ");
+ out.t(val);
+ out.ee();
+ out.be("div", null, "10" + _keyScope5, component, 0, 0);
+ out.ee();
+ out.be("div", null, `@other-${key}`, component, 0, 0);
+ out.ee();
+ }
+
+ for (let _steps3 = (10 - 0) / 2, _step3 = 0; _step3 <= _steps3; _step3++) {
+ const i = 0 + _step3 * 2;
+ const _keyValue4 = `@${i}`,
+ _keyScope6 = `[${_keyValue4}]`;
+ out.be("div", null, _keyValue4, component, null, 0);
+ out.t(i);
+ out.ee();
+ out.be("div", null, "11" + _keyScope6, component, 0, 0);
+ out.ee();
+ out.be("div", null, `@other-${i}`, component, 0, 0);
+ out.ee();
+
+ for (let _steps2 = (10 - 0) / 2, _step2 = 0; _step2 <= _steps2; _step2++) {
+ const i = 0 + _step2 * 2;
+ const _keyValue5 = `@${i}`,
+ _keyScope7 = `[${_keyValue5}]`;
+ out.be("div", null, _keyValue5, component, null, 0);
+ out.t(i);
+ out.ee();
+ out.be("div", null, "12" + _keyScope7, component, 0, 0);
+ out.ee();
+ out.be("div", null, `@other-${i}`, component, 0, 0);
+ out.ee();
+ }
+ }
+
+ for (let _steps4 = (0 - 10) / -2, _step4 = 0; _step4 <= _steps4; _step4++) {
+ const i = 10 + _step4 * -2;
+ const _keyValue6 = `@${i}`,
+ _keyScope8 = `[${_keyValue6}]`;
+ out.be("div", null, _keyValue6, component, null, 0);
+ out.t(i);
+ out.ee();
+ out.be("div", null, "13" + _keyScope8, component, 0, 0);
+ out.ee();
+ out.be("div", null, `@other-${i}`, component, 0, 0);
+ out.ee();
+ }
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/hello-dynamic/generated-expected.marko b/packages/translator-default/test/fixtures/hello-dynamic/generated-expected.marko
new file mode 100644
index 000000000..4b0fa8967
--- /dev/null
+++ b/packages/translator-default/test/fixtures/hello-dynamic/generated-expected.marko
@@ -0,0 +1 @@
+-- Hello ${input.name}! Hello $!{input.name}! Hello $!{input.missing}!
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/hello-dynamic/html-expected.js b/packages/translator-default/test/fixtures/hello-dynamic/html-expected.js
new file mode 100644
index 000000000..f4f65461e
--- /dev/null
+++ b/packages/translator-default/test/fixtures/hello-dynamic/html-expected.js
@@ -0,0 +1,15 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import { x as _marko_escapeXml } from "marko/src/runtime/html/helpers/escape-xml";
+import _marko_to_string from "marko/src/runtime/helpers/to-string";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "5nWTrVOu",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w(`Hello ${_marko_escapeXml(input.name)}! Hello ${_marko_to_string(input.name)}! Hello ${_marko_to_string(input.missing)}!`);
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/hello-dynamic/template.marko b/packages/translator-default/test/fixtures/hello-dynamic/template.marko
new file mode 100644
index 000000000..4b0fa8967
--- /dev/null
+++ b/packages/translator-default/test/fixtures/hello-dynamic/template.marko
@@ -0,0 +1 @@
+-- Hello ${input.name}! Hello $!{input.name}! Hello $!{input.missing}!
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/hello-dynamic/vdom-expected.js b/packages/translator-default/test/fixtures/hello-dynamic/vdom-expected.js
new file mode 100644
index 000000000..d6f373aaf
--- /dev/null
+++ b/packages/translator-default/test/fixtures/hello-dynamic/vdom-expected.js
@@ -0,0 +1,24 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("5nWTrVOu", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.t("Hello ");
+ out.t(input.name);
+ out.t("! Hello ");
+ out.h(input.name);
+ out.t("! Hello ");
+ out.h(input.missing);
+ out.t("!");
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/html-comment/generated-expected.marko b/packages/translator-default/test/fixtures/html-comment/generated-expected.marko
new file mode 100644
index 000000000..906d49d28
--- /dev/null
+++ b/packages/translator-default/test/fixtures/html-comment/generated-expected.marko
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/html-comment/html-expected.js b/packages/translator-default/test/fixtures/html-comment/html-expected.js
new file mode 100644
index 000000000..02a673af0
--- /dev/null
+++ b/packages/translator-default/test/fixtures/html-comment/html-expected.js
@@ -0,0 +1,13 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "Q0sT_tOR",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w("");
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/html-comment/template.marko b/packages/translator-default/test/fixtures/html-comment/template.marko
new file mode 100644
index 000000000..68a09aba9
--- /dev/null
+++ b/packages/translator-default/test/fixtures/html-comment/template.marko
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/html-comment/vdom-expected.js b/packages/translator-default/test/fixtures/html-comment/vdom-expected.js
new file mode 100644
index 000000000..11dac9f7a
--- /dev/null
+++ b/packages/translator-default/test/fixtures/html-comment/vdom-expected.js
@@ -0,0 +1,16 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("Q0sT_tOR", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/html-entity/generated-expected.marko b/packages/translator-default/test/fixtures/html-entity/generated-expected.marko
new file mode 100644
index 000000000..6d9005a74
--- /dev/null
+++ b/packages/translator-default/test/fixtures/html-entity/generated-expected.marko
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/html-entity/html-expected.js b/packages/translator-default/test/fixtures/html-entity/html-expected.js
new file mode 100644
index 000000000..81b4582ba
--- /dev/null
+++ b/packages/translator-default/test/fixtures/html-entity/html-expected.js
@@ -0,0 +1,13 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "w5F2RVUv",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w("
");
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/html-entity/template.marko b/packages/translator-default/test/fixtures/html-entity/template.marko
new file mode 100644
index 000000000..e6a458134
--- /dev/null
+++ b/packages/translator-default/test/fixtures/html-entity/template.marko
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/html-entity/vdom-expected.js b/packages/translator-default/test/fixtures/html-entity/vdom-expected.js
new file mode 100644
index 000000000..e7e23da23
--- /dev/null
+++ b/packages/translator-default/test/fixtures/html-entity/vdom-expected.js
@@ -0,0 +1,20 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("w5F2RVUv", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.be("div", null, "0", component, null, 0);
+ out.t("
");
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/if-tag/generated-expected.marko b/packages/translator-default/test/fixtures/if-tag/generated-expected.marko
new file mode 100644
index 000000000..35e75c0e5
--- /dev/null
+++ b/packages/translator-default/test/fixtures/if-tag/generated-expected.marko
@@ -0,0 +1,17 @@
+
+ Hello
+
+
+ World
+
+
+
+ A
+
+
+ B
+
+
+ C
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/if-tag/html-expected.js b/packages/translator-default/test/fixtures/if-tag/html-expected.js
new file mode 100644
index 000000000..e60b3516d
--- /dev/null
+++ b/packages/translator-default/test/fixtures/if-tag/html-expected.js
@@ -0,0 +1,31 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "HCe_Baop",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ if (a + b) {
+ out.w("Hello");
+ }
+
+ if (a, b) {
+ out.w("World");
+ }
+
+ out.w("
");
+
+ if (x) {
+ out.w("A");
+ } else if (y) {
+ out.w("B");
+ } else {
+ out.w("C");
+ }
+
+ out.w("
");
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/if-tag/template.marko b/packages/translator-default/test/fixtures/if-tag/template.marko
new file mode 100644
index 000000000..d13ad2cdf
--- /dev/null
+++ b/packages/translator-default/test/fixtures/if-tag/template.marko
@@ -0,0 +1,19 @@
+
+ Hello
+
+
+
+ World
+
+
+
+
+ A
+
+
+ B
+
+
+ C
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/if-tag/vdom-expected.js b/packages/translator-default/test/fixtures/if-tag/vdom-expected.js
new file mode 100644
index 000000000..2816b198a
--- /dev/null
+++ b/packages/translator-default/test/fixtures/if-tag/vdom-expected.js
@@ -0,0 +1,36 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("HCe_Baop", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ if (a + b) {
+ out.t("Hello");
+ }
+
+ if (a, b) {
+ out.t("World");
+ }
+
+ out.be("div", null, "0", component, null, 0);
+
+ if (x) {
+ out.t("A");
+ } else if (y) {
+ out.t("B");
+ } else {
+ out.t("C");
+ }
+
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/import-tag-conflict/generated-expected.marko b/packages/translator-default/test/fixtures/import-tag-conflict/generated-expected.marko
new file mode 100644
index 000000000..464ca2702
--- /dev/null
+++ b/packages/translator-default/test/fixtures/import-tag-conflict/generated-expected.marko
@@ -0,0 +1,2 @@
+import { asset as test } from "./test1/asset";
+import { asset } from "./test2/asset";
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/import-tag-conflict/html-expected.js b/packages/translator-default/test/fixtures/import-tag-conflict/html-expected.js
new file mode 100644
index 000000000..6cf99385c
--- /dev/null
+++ b/packages/translator-default/test/fixtures/import-tag-conflict/html-expected.js
@@ -0,0 +1,13 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import { asset as test } from "./test1/asset";
+import { asset } from "./test2/asset";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "fIVsfPog",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/import-tag-conflict/template.marko b/packages/translator-default/test/fixtures/import-tag-conflict/template.marko
new file mode 100644
index 000000000..79fc78331
--- /dev/null
+++ b/packages/translator-default/test/fixtures/import-tag-conflict/template.marko
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/import-tag-conflict/vdom-expected.js b/packages/translator-default/test/fixtures/import-tag-conflict/vdom-expected.js
new file mode 100644
index 000000000..74dcfcb10
--- /dev/null
+++ b/packages/translator-default/test/fixtures/import-tag-conflict/vdom-expected.js
@@ -0,0 +1,18 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import { asset as test } from "./test1/asset";
+import { asset } from "./test2/asset";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("fIVsfPog", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/import-tag/bar.js b/packages/translator-default/test/fixtures/import-tag/bar.js
new file mode 100644
index 000000000..bc7c25c6d
--- /dev/null
+++ b/packages/translator-default/test/fixtures/import-tag/bar.js
@@ -0,0 +1 @@
+module.exports.f = "bar";
diff --git a/packages/translator-default/test/fixtures/import-tag/foo.js b/packages/translator-default/test/fixtures/import-tag/foo.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/translator-default/test/fixtures/import-tag/generated-expected.marko b/packages/translator-default/test/fixtures/import-tag/generated-expected.marko
new file mode 100644
index 000000000..a721f08b8
--- /dev/null
+++ b/packages/translator-default/test/fixtures/import-tag/generated-expected.marko
@@ -0,0 +1,2 @@
+import bar, { f as foo } from "./bar";
+import "./foo";
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/import-tag/html-expected.js b/packages/translator-default/test/fixtures/import-tag/html-expected.js
new file mode 100644
index 000000000..c8e871553
--- /dev/null
+++ b/packages/translator-default/test/fixtures/import-tag/html-expected.js
@@ -0,0 +1,13 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import bar, { f as foo } from "./bar";
+import "./foo";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "pCZWm9oa",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/import-tag/template.marko b/packages/translator-default/test/fixtures/import-tag/template.marko
new file mode 100644
index 000000000..d1b38d7ba
--- /dev/null
+++ b/packages/translator-default/test/fixtures/import-tag/template.marko
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/import-tag/vdom-expected.js b/packages/translator-default/test/fixtures/import-tag/vdom-expected.js
new file mode 100644
index 000000000..8dee6890e
--- /dev/null
+++ b/packages/translator-default/test/fixtures/import-tag/vdom-expected.js
@@ -0,0 +1,18 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import bar, { f as foo } from "./bar";
+import "./foo";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("pCZWm9oa", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/macro-non-root/generated-expected.marko b/packages/translator-default/test/fixtures/macro-non-root/generated-expected.marko
new file mode 100644
index 000000000..2d0472dd7
--- /dev/null
+++ b/packages/translator-default/test/fixtures/macro-non-root/generated-expected.marko
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/macro-non-root/html-expected.js b/packages/translator-default/test/fixtures/macro-non-root/html-expected.js
new file mode 100644
index 000000000..985eaa320
--- /dev/null
+++ b/packages/translator-default/test/fixtures/macro-non-root/html-expected.js
@@ -0,0 +1,19 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "HqRKXhaW",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w("
");
+
+ function _stuff(out, x) {
+ out.w("
");
+ }
+
+ out.w("
");
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/macro-non-root/template.marko b/packages/translator-default/test/fixtures/macro-non-root/template.marko
new file mode 100644
index 000000000..2d0472dd7
--- /dev/null
+++ b/packages/translator-default/test/fixtures/macro-non-root/template.marko
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/macro-non-root/vdom-expected.js b/packages/translator-default/test/fixtures/macro-non-root/vdom-expected.js
new file mode 100644
index 000000000..e0201bce4
--- /dev/null
+++ b/packages/translator-default/test/fixtures/macro-non-root/vdom-expected.js
@@ -0,0 +1,25 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("HqRKXhaW", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.be("div", null, "0", component, null, 0);
+
+ function _stuff(out, x) {
+ out.be("div", null, "2", component, 0, 0);
+ out.ee();
+ }
+
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/macros/generated-expected.marko b/packages/translator-default/test/fixtures/macros/generated-expected.marko
new file mode 100644
index 000000000..99647d3fc
--- /dev/null
+++ b/packages/translator-default/test/fixtures/macros/generated-expected.marko
@@ -0,0 +1,13 @@
+
+ Name: ${node.name} Children:
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/macros/html-expected.js b/packages/translator-default/test/fixtures/macros/html-expected.js
new file mode 100644
index 000000000..5bf7e7128
--- /dev/null
+++ b/packages/translator-default/test/fixtures/macros/html-expected.js
@@ -0,0 +1,36 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import { x as _marko_escapeXml } from "marko/src/runtime/html/helpers/escape-xml";
+import _marko_dynamic_tag from "marko/src/runtime/helpers/dynamic-tag";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "uRMbWunz",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ function _renderTree(out, node) {
+ out.w(`Name: ${_marko_escapeXml(node.name)} Children: `);
+
+ if (node.children) {
+ out.w("
");
+ {
+ let _keyValue = 0;
+
+ for (const child of node.children) {
+ const _keyScope = `[${_keyValue++}]`;
+ out.w("");
+
+ _marko_dynamic_tag(out, _renderTree, () => child, null, null, null, _component, "3" + _keyScope);
+
+ out.w(" ");
+ }
+ }
+ out.w(" ");
+ }
+ }
+
+ _marko_dynamic_tag(out, _renderTree, () => input.node, null, null, null, _component, "4");
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/macros/template.marko b/packages/translator-default/test/fixtures/macros/template.marko
new file mode 100644
index 000000000..0921972b3
--- /dev/null
+++ b/packages/translator-default/test/fixtures/macros/template.marko
@@ -0,0 +1,16 @@
+
+ Name: ${node.name}
+
+ Children:
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/macros/vdom-expected.js b/packages/translator-default/test/fixtures/macros/vdom-expected.js
new file mode 100644
index 000000000..82a9393a1
--- /dev/null
+++ b/packages/translator-default/test/fixtures/macros/vdom-expected.js
@@ -0,0 +1,42 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_dynamic_tag from "marko/src/runtime/helpers/dynamic-tag";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("uRMbWunz", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ function _renderTree(out, node) {
+ out.t("Name: ");
+ out.t(node.name);
+ out.t(" Children: ");
+
+ if (node.children) {
+ out.be("ul", null, "1", component, null, 0);
+ {
+ let _keyValue = 0;
+
+ for (const child of node.children) {
+ const _keyScope = `[${_keyValue++}]`;
+ out.be("li", null, "2" + _keyScope, component, null, 0);
+
+ _marko_dynamic_tag(out, _renderTree, () => child, null, null, null, _component, "3" + _keyScope);
+
+ out.ee();
+ }
+ }
+ out.ee();
+ }
+ }
+
+ _marko_dynamic_tag(out, _renderTree, () => input.node, null, null, null, _component, "4");
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/module-code/env.js b/packages/translator-default/test/fixtures/module-code/env.js
new file mode 100644
index 000000000..832f42dad
--- /dev/null
+++ b/packages/translator-default/test/fixtures/module-code/env.js
@@ -0,0 +1 @@
+exports.isDebug = true;
diff --git a/packages/translator-default/test/fixtures/module-code/generated-expected.marko b/packages/translator-default/test/fixtures/module-code/generated-expected.marko
new file mode 100644
index 000000000..2e8d24288
--- /dev/null
+++ b/packages/translator-default/test/fixtures/module-code/generated-expected.marko
@@ -0,0 +1,5 @@
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/module-code/html-expected.js b/packages/translator-default/test/fixtures/module-code/html-expected.js
new file mode 100644
index 000000000..9fb86a4bb
--- /dev/null
+++ b/packages/translator-default/test/fixtures/module-code/html-expected.js
@@ -0,0 +1 @@
+module.exports = require("./src/index");
diff --git a/packages/translator-default/test/fixtures/module-code/template.marko b/packages/translator-default/test/fixtures/module-code/template.marko
new file mode 100644
index 000000000..91f66220d
--- /dev/null
+++ b/packages/translator-default/test/fixtures/module-code/template.marko
@@ -0,0 +1,6 @@
+
+
+// Test comment
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/module-code/vdom-expected.js b/packages/translator-default/test/fixtures/module-code/vdom-expected.js
new file mode 100644
index 000000000..9fb86a4bb
--- /dev/null
+++ b/packages/translator-default/test/fixtures/module-code/vdom-expected.js
@@ -0,0 +1 @@
+module.exports = require("./src/index");
diff --git a/packages/translator-default/test/fixtures/no-update-directives/components/hello/index.marko b/packages/translator-default/test/fixtures/no-update-directives/components/hello/index.marko
new file mode 100644
index 000000000..78e7012b8
--- /dev/null
+++ b/packages/translator-default/test/fixtures/no-update-directives/components/hello/index.marko
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/no-update-directives/generated-expected.marko b/packages/translator-default/test/fixtures/no-update-directives/generated-expected.marko
new file mode 100644
index 000000000..10bce2225
--- /dev/null
+++ b/packages/translator-default/test/fixtures/no-update-directives/generated-expected.marko
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Again
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Again
+
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/no-update-directives/html-expected.js b/packages/translator-default/test/fixtures/no-update-directives/html-expected.js
new file mode 100644
index 000000000..82d547377
--- /dev/null
+++ b/packages/translator-default/test/fixtures/no-update-directives/html-expected.js
@@ -0,0 +1,148 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _hello from "./components/hello/index.marko";
+import _marko_load_tag from "marko/src/runtime/helpers/load-tag";
+
+const _hello_tag = _marko_load_tag(_hello);
+
+import _preserve from "../../../../marko/src/core-tags/components/preserve-tag.js";
+
+const _preserve_tag = _marko_load_tag(_preserve);
+
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "rVSetn_I",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ _preserve_tag({
+ "renderBody": out => {
+ _hello_tag({
+ "renderBody": out => {
+ _hello_tag({}, out, _component, "1");
+
+ out.w("
");
+ }
+ }, out, _component, "0");
+ }
+ }, out, _component, "p_0");
+
+ _preserve_tag({
+ "if": x,
+ "renderBody": out => {
+ _hello_tag({
+ "renderBody": out => {
+ _preserve_tag({
+ "if": (a, b),
+ "renderBody": out => {
+ _hello_tag({}, out, _component, "4");
+ }
+ }, out, _component, "p_4");
+
+ out.w("
");
+ }
+ }, out, _component, "3");
+ }
+ }, out, _component, "p_3");
+
+ _hello_tag({
+ "renderBody": out => {
+ _preserve_tag({
+ "renderBody": out => {
+ _hello_tag({}, out, _component, "7");
+
+ out.w("
");
+ }
+ }, out, _component, "p_6");
+ }
+ }, out, _component, "6");
+
+ _hello_tag({
+ "renderBody": out => {
+ _preserve_tag({
+ "if": x,
+ "renderBody": out => {
+ _hello_tag({
+ "renderBody": out => {
+ _preserve_tag({
+ "if": (a, b),
+ "renderBody": out => {
+ out.w("Again");
+ }
+ }, out, _component, "p_10");
+ }
+ }, out, _component, "10");
+
+ out.w("
");
+ }
+ }, out, _component, "p_9");
+ }
+ }, out, _component, "9");
+
+ _preserve_tag({
+ "renderBody": out => {
+ _hello_tag({
+ "renderBody": out => {
+ _hello_tag({}, out, _component, "12");
+
+ out.w("
");
+ }
+ }, out, _component, "@a");
+ }
+ }, out, _component, "p_@a");
+
+ _preserve_tag({
+ "if": x,
+ "renderBody": out => {
+ _hello_tag({
+ "renderBody": out => {
+ _preserve_tag({
+ "if": (a, b),
+ "renderBody": out => {
+ _hello_tag({}, out, _component, "@c");
+ }
+ }, out, _component, "p_@c");
+
+ out.w("
");
+ }
+ }, out, _component, "@b");
+ }
+ }, out, _component, "p_@b");
+
+ _hello_tag({
+ "renderBody": out => {
+ _preserve_tag({
+ "renderBody": out => {
+ _hello_tag({}, out, _component, "15");
+
+ out.w("
");
+ }
+ }, out, _component, "p_@d");
+ }
+ }, out, _component, "@d");
+
+ _hello_tag({
+ "renderBody": out => {
+ _preserve_tag({
+ "if": x,
+ "renderBody": out => {
+ _hello_tag({
+ "renderBody": out => {
+ _preserve_tag({
+ "if": (a, b),
+ "renderBody": out => {
+ out.w("Again");
+ }
+ }, out, _component, "p_@f");
+ }
+ }, out, _component, "@f");
+
+ out.w("
");
+ }
+ }, out, _component, "p_@e");
+ }
+ }, out, _component, "@e");
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/no-update-directives/template.marko b/packages/translator-default/test/fixtures/no-update-directives/template.marko
new file mode 100644
index 000000000..a5467d8fc
--- /dev/null
+++ b/packages/translator-default/test/fixtures/no-update-directives/template.marko
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Again
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Again
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/no-update-directives/vdom-expected.js b/packages/translator-default/test/fixtures/no-update-directives/vdom-expected.js
new file mode 100644
index 000000000..2b7f86fe4
--- /dev/null
+++ b/packages/translator-default/test/fixtures/no-update-directives/vdom-expected.js
@@ -0,0 +1,161 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _hello from "./components/hello/index.marko";
+import _marko_load_tag from "marko/src/runtime/helpers/load-tag";
+
+const _hello_tag = _marko_load_tag(_hello);
+
+import _preserve from "../../../../marko/src/core-tags/components/preserve-tag.js";
+
+const _preserve_tag = _marko_load_tag(_preserve);
+
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("rVSetn_I", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ _preserve_tag({
+ "renderBody": out => {
+ _hello_tag({
+ "renderBody": out => {
+ _hello_tag({}, out, _component, "1");
+
+ out.be("div", null, "2", component, 0, 0);
+ out.ee();
+ }
+ }, out, _component, "0");
+ }
+ }, out, _component, "p_0");
+
+ _preserve_tag({
+ "if": x,
+ "renderBody": out => {
+ _hello_tag({
+ "renderBody": out => {
+ _preserve_tag({
+ "if": (a, b),
+ "renderBody": out => {
+ _hello_tag({}, out, _component, "4");
+ }
+ }, out, _component, "p_4");
+
+ out.be("div", null, "5", component, 0, 0);
+ out.ee();
+ }
+ }, out, _component, "3");
+ }
+ }, out, _component, "p_3");
+
+ _hello_tag({
+ "renderBody": out => {
+ _preserve_tag({
+ "renderBody": out => {
+ _hello_tag({}, out, _component, "7");
+
+ out.be("div", null, "8", component, 0, 0);
+ out.ee();
+ }
+ }, out, _component, "p_6");
+ }
+ }, out, _component, "6");
+
+ _hello_tag({
+ "renderBody": out => {
+ _preserve_tag({
+ "if": x,
+ "renderBody": out => {
+ _hello_tag({
+ "renderBody": out => {
+ _preserve_tag({
+ "if": (a, b),
+ "renderBody": out => {
+ out.t("Again");
+ }
+ }, out, _component, "p_10");
+ }
+ }, out, _component, "10");
+
+ out.be("div", null, "11", component, 0, 0);
+ out.ee();
+ }
+ }, out, _component, "p_9");
+ }
+ }, out, _component, "9");
+
+ _preserve_tag({
+ "renderBody": out => {
+ _hello_tag({
+ "renderBody": out => {
+ _hello_tag({}, out, _component, "12");
+
+ out.be("div", null, "13", component, 0, 0);
+ out.ee();
+ }
+ }, out, _component, "@a");
+ }
+ }, out, _component, "p_@a");
+
+ _preserve_tag({
+ "if": x,
+ "renderBody": out => {
+ _hello_tag({
+ "renderBody": out => {
+ _preserve_tag({
+ "if": (a, b),
+ "renderBody": out => {
+ _hello_tag({}, out, _component, "@c");
+ }
+ }, out, _component, "p_@c");
+
+ out.be("div", null, "14", component, 0, 0);
+ out.ee();
+ }
+ }, out, _component, "@b");
+ }
+ }, out, _component, "p_@b");
+
+ _hello_tag({
+ "renderBody": out => {
+ _preserve_tag({
+ "renderBody": out => {
+ _hello_tag({}, out, _component, "15");
+
+ out.be("div", null, "16", component, 0, 0);
+ out.ee();
+ }
+ }, out, _component, "p_@d");
+ }
+ }, out, _component, "@d");
+
+ _hello_tag({
+ "renderBody": out => {
+ _preserve_tag({
+ "if": x,
+ "renderBody": out => {
+ _hello_tag({
+ "renderBody": out => {
+ _preserve_tag({
+ "if": (a, b),
+ "renderBody": out => {
+ out.t("Again");
+ }
+ }, out, _component, "p_@f");
+ }
+ }, out, _component, "@f");
+
+ out.be("div", null, "17", component, 0, 0);
+ out.ee();
+ }
+ }, out, _component, "p_@e");
+ }
+ }, out, _component, "@e");
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/no-update-modifier-multiple/generated-expected.marko b/packages/translator-default/test/fixtures/no-update-modifier-multiple/generated-expected.marko
new file mode 100644
index 000000000..8b5864ae5
--- /dev/null
+++ b/packages/translator-default/test/fixtures/no-update-modifier-multiple/generated-expected.marko
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/no-update-modifier-multiple/html-expected.js b/packages/translator-default/test/fixtures/no-update-modifier-multiple/html-expected.js
new file mode 100644
index 000000000..0364a9be5
--- /dev/null
+++ b/packages/translator-default/test/fixtures/no-update-modifier-multiple/html-expected.js
@@ -0,0 +1,19 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_props from "marko/src/runtime/html/helpers/data-marko";
+import _marko_attr from "marko/src/runtime/html/helpers/attr";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "jWznNrMq",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w(`
`);
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/no-update-modifier-multiple/template.marko b/packages/translator-default/test/fixtures/no-update-modifier-multiple/template.marko
new file mode 100644
index 000000000..4d54012a0
--- /dev/null
+++ b/packages/translator-default/test/fixtures/no-update-modifier-multiple/template.marko
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/packages/translator-default/test/fixtures/no-update-modifier-multiple/vdom-expected.js b/packages/translator-default/test/fixtures/no-update-modifier-multiple/vdom-expected.js
new file mode 100644
index 000000000..e5ac3f83a
--- /dev/null
+++ b/packages/translator-default/test/fixtures/no-update-modifier-multiple/vdom-expected.js
@@ -0,0 +1,32 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import "marko/src/runtime/vdom/preserve-attrs";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("jWznNrMq", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.be("div", null, "0", component, null, 0);
+ out.e("input", {
+ "value": input.defaultValue
+ }, "1", component, 0, 0, {
+ noupdate: ["value"]
+ });
+ out.e("input", {
+ "type": "checkbox",
+ "value": input.defaultValue,
+ "checked": input.checked
+ }, "2", component, 0, 0, {
+ noupdate: ["value", "checked"]
+ });
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/no-update-modifier/generated-expected.marko b/packages/translator-default/test/fixtures/no-update-modifier/generated-expected.marko
new file mode 100644
index 000000000..add9088ef
--- /dev/null
+++ b/packages/translator-default/test/fixtures/no-update-modifier/generated-expected.marko
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/no-update-modifier/html-expected.js b/packages/translator-default/test/fixtures/no-update-modifier/html-expected.js
new file mode 100644
index 000000000..d335d2530
--- /dev/null
+++ b/packages/translator-default/test/fixtures/no-update-modifier/html-expected.js
@@ -0,0 +1,17 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_props from "marko/src/runtime/html/helpers/data-marko";
+import _marko_attr from "marko/src/runtime/html/helpers/attr";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "jmf6k77l",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w(`
`);
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/no-update-modifier/template.marko b/packages/translator-default/test/fixtures/no-update-modifier/template.marko
new file mode 100644
index 000000000..aaeaa7ce0
--- /dev/null
+++ b/packages/translator-default/test/fixtures/no-update-modifier/template.marko
@@ -0,0 +1 @@
+
diff --git a/packages/translator-default/test/fixtures/no-update-modifier/vdom-expected.js b/packages/translator-default/test/fixtures/no-update-modifier/vdom-expected.js
new file mode 100644
index 000000000..5081220a3
--- /dev/null
+++ b/packages/translator-default/test/fixtures/no-update-modifier/vdom-expected.js
@@ -0,0 +1,23 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import "marko/src/runtime/vdom/preserve-attrs";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("jmf6k77l", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.e("input", {
+ "value": input.defaultValue
+ }, "0", component, 0, 0, {
+ noupdate: ["value"]
+ });
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/placeholders/generated-expected.marko b/packages/translator-default/test/fixtures/placeholders/generated-expected.marko
new file mode 100644
index 000000000..713a97239
--- /dev/null
+++ b/packages/translator-default/test/fixtures/placeholders/generated-expected.marko
@@ -0,0 +1,13 @@
+
+ ${input.x}${"Hello world
"}$!{input.x}$!{null}$!{"Hello world
"}
+ "}
+
+
+ "}
+
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/placeholders/html-expected.js b/packages/translator-default/test/fixtures/placeholders/html-expected.js
new file mode 100644
index 000000000..0136096e0
--- /dev/null
+++ b/packages/translator-default/test/fixtures/placeholders/html-expected.js
@@ -0,0 +1,15 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import { x as _marko_escapeXml } from "marko/src/runtime/html/helpers/escape-xml";
+import _marko_to_string from "marko/src/runtime/helpers/to-string";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "eeAe9IyY",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w(`
${_marko_escapeXml(input.x)}Hello world <a/>${_marko_to_string(input.x)}Hello world
`);
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/placeholders/template.marko b/packages/translator-default/test/fixtures/placeholders/template.marko
new file mode 100644
index 000000000..4a8ced340
--- /dev/null
+++ b/packages/translator-default/test/fixtures/placeholders/template.marko
@@ -0,0 +1,15 @@
+
+ ${input.x}
+ ${"Hello world
"}
+ $!{input.x}
+ $!{null}
+ $!{"Hello world
"}
+
+ "}
+
+
+ "}
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/placeholders/vdom-expected.js b/packages/translator-default/test/fixtures/placeholders/vdom-expected.js
new file mode 100644
index 000000000..8a70899d1
--- /dev/null
+++ b/packages/translator-default/test/fixtures/placeholders/vdom-expected.js
@@ -0,0 +1,33 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("eeAe9IyY", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.be("div", null, "0", component, null, 0);
+ out.t(input.x);
+ out.t("Hello world
");
+ out.h(input.x);
+ out.h("Hello world
");
+ out.be("script", null, "1", component, null, 0);
+ out.t("\n ");
+ out.t("Hello
");
+ out.t("\n ");
+ out.ee();
+ out.be("style", null, "2", component, null, 0);
+ out.t("\n ");
+ out.t("Hello ");
+ out.t("\n ");
+ out.ee();
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/prevent-override-component-def/generated-expected.marko b/packages/translator-default/test/fixtures/prevent-override-component-def/generated-expected.marko
new file mode 100644
index 000000000..ee9808459
--- /dev/null
+++ b/packages/translator-default/test/fixtures/prevent-override-component-def/generated-expected.marko
@@ -0,0 +1,2 @@
+$ const _component = "test";
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/prevent-override-component-def/html-expected.js b/packages/translator-default/test/fixtures/prevent-override-component-def/html-expected.js
new file mode 100644
index 000000000..22a2f127b
--- /dev/null
+++ b/packages/translator-default/test/fixtures/prevent-override-component-def/html-expected.js
@@ -0,0 +1,14 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "ju3YT_6x",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component2, component, state) {
+ const _component = "test";
+ out.w("
");
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/prevent-override-component-def/template.marko b/packages/translator-default/test/fixtures/prevent-override-component-def/template.marko
new file mode 100644
index 000000000..ee9808459
--- /dev/null
+++ b/packages/translator-default/test/fixtures/prevent-override-component-def/template.marko
@@ -0,0 +1,2 @@
+$ const _component = "test";
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/prevent-override-component-def/vdom-expected.js b/packages/translator-default/test/fixtures/prevent-override-component-def/vdom-expected.js
new file mode 100644
index 000000000..b99f90c2b
--- /dev/null
+++ b/packages/translator-default/test/fixtures/prevent-override-component-def/vdom-expected.js
@@ -0,0 +1,20 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("ju3YT_6x", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component2, component, state) {
+ const _component = "test";
+ out.be("div", null, "0", component, 0, 0);
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/root-migration/generated-expected.marko b/packages/translator-default/test/fixtures/root-migration/generated-expected.marko
new file mode 100644
index 000000000..c85562936
--- /dev/null
+++ b/packages/translator-default/test/fixtures/root-migration/generated-expected.marko
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/root-migration/html-expected.js b/packages/translator-default/test/fixtures/root-migration/html-expected.js
new file mode 100644
index 000000000..a566733c7
--- /dev/null
+++ b/packages/translator-default/test/fixtures/root-migration/html-expected.js
@@ -0,0 +1,14 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_attr from "marko/src/runtime/html/helpers/attr";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "LgKxe0HS",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w(`
`);
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/root-migration/marko.json b/packages/translator-default/test/fixtures/root-migration/marko.json
new file mode 100644
index 000000000..bc35d5ce2
--- /dev/null
+++ b/packages/translator-default/test/fixtures/root-migration/marko.json
@@ -0,0 +1,3 @@
+{
+ "migrator": "./migrator.js"
+}
diff --git a/packages/translator-default/test/fixtures/root-migration/migrator.js b/packages/translator-default/test/fixtures/root-migration/migrator.js
new file mode 100644
index 000000000..2a3f8300d
--- /dev/null
+++ b/packages/translator-default/test/fixtures/root-migration/migrator.js
@@ -0,0 +1,9 @@
+import { types as t } from "@marko/babel-types";
+
+export default () => ({
+ Identifier(path) {
+ if (path.node.name === "old") {
+ path.replaceWith(t.identifier("new"));
+ }
+ }
+});
diff --git a/packages/translator-default/test/fixtures/root-migration/template.marko b/packages/translator-default/test/fixtures/root-migration/template.marko
new file mode 100644
index 000000000..c85562936
--- /dev/null
+++ b/packages/translator-default/test/fixtures/root-migration/template.marko
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/root-migration/vdom-expected.js b/packages/translator-default/test/fixtures/root-migration/vdom-expected.js
new file mode 100644
index 000000000..0b4b33e98
--- /dev/null
+++ b/packages/translator-default/test/fixtures/root-migration/vdom-expected.js
@@ -0,0 +1,21 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("LgKxe0HS", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.be("div", {
+ "a": new
+ }, "0", component, 0, 0);
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/root-transform/generated-expected.marko b/packages/translator-default/test/fixtures/root-transform/generated-expected.marko
new file mode 100644
index 000000000..fb8a7a7ff
--- /dev/null
+++ b/packages/translator-default/test/fixtures/root-transform/generated-expected.marko
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/root-transform/html-expected.js b/packages/translator-default/test/fixtures/root-transform/html-expected.js
new file mode 100644
index 000000000..f02d54717
--- /dev/null
+++ b/packages/translator-default/test/fixtures/root-transform/html-expected.js
@@ -0,0 +1,14 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_attr from "marko/src/runtime/html/helpers/attr";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "yTIiM99f",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w(`
`);
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/root-transform/marko.json b/packages/translator-default/test/fixtures/root-transform/marko.json
new file mode 100644
index 000000000..4b634db9f
--- /dev/null
+++ b/packages/translator-default/test/fixtures/root-transform/marko.json
@@ -0,0 +1,3 @@
+{
+ "transformer": "./transformer.js"
+}
diff --git a/packages/translator-default/test/fixtures/root-transform/template.marko b/packages/translator-default/test/fixtures/root-transform/template.marko
new file mode 100644
index 000000000..fb8a7a7ff
--- /dev/null
+++ b/packages/translator-default/test/fixtures/root-transform/template.marko
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/root-transform/transformer.js b/packages/translator-default/test/fixtures/root-transform/transformer.js
new file mode 100644
index 000000000..4b6ef2a73
--- /dev/null
+++ b/packages/translator-default/test/fixtures/root-transform/transformer.js
@@ -0,0 +1,9 @@
+import { types as t } from "@marko/babel-types";
+
+export default () => ({
+ Identifier(path) {
+ if (path.node.name === "before") {
+ path.replaceWith(t.identifier("after"));
+ }
+ }
+});
diff --git a/packages/translator-default/test/fixtures/root-transform/vdom-expected.js b/packages/translator-default/test/fixtures/root-transform/vdom-expected.js
new file mode 100644
index 000000000..c0bc1fa51
--- /dev/null
+++ b/packages/translator-default/test/fixtures/root-transform/vdom-expected.js
@@ -0,0 +1,21 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("yTIiM99f", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.be("div", {
+ "a": after
+ }, "0", component, 0, 0);
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/sanity-check/components/other/index.marko b/packages/translator-default/test/fixtures/sanity-check/components/other/index.marko
new file mode 100644
index 000000000..5ab931b1e
--- /dev/null
+++ b/packages/translator-default/test/fixtures/sanity-check/components/other/index.marko
@@ -0,0 +1,7 @@
+class {
+ onCreate() {
+
+ }
+}
+
+
hi
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/sanity-check/components/other/marko-tag.json b/packages/translator-default/test/fixtures/sanity-check/components/other/marko-tag.json
new file mode 100644
index 000000000..965de948b
--- /dev/null
+++ b/packages/translator-default/test/fixtures/sanity-check/components/other/marko-tag.json
@@ -0,0 +1,13 @@
+{
+ "@*": "expression",
+ "@a
- []": {
+ "@b
[]": {
+ "@*": "expression"
+ }
+ },
+ "@c": {
+ "@d": {
+ "@*": "expression"
+ }
+ }
+}
diff --git a/packages/translator-default/test/fixtures/sanity-check/generated-expected.marko b/packages/translator-default/test/fixtures/sanity-check/generated-expected.marko
new file mode 100644
index 000000000..50a72f2d7
--- /dev/null
+++ b/packages/translator-default/test/fixtures/sanity-check/generated-expected.marko
@@ -0,0 +1,105 @@
+import a from "b";
+
+style {
+ div {
+ color: green;
+ }
+}
+
+
+static {
+ doThings();
+ andStuff();
+
+ function more() {
+ abc();
+ }
+
+}
+class {
+ onCreate() {
+ this.stuff();
+ }
+
+}
+
+
+
+$ var b = thing;
+$ let c = thing;
+
+ $ var d = thing;
+ $ let e = thing;
+
+
+
+
+
+
+<${a} key="x">
+
+>
+
+
+
+
+
+
+ <@c c=1>
+
+ <@d d=1>
+
+ @d>
+ @c>
+
+
+ ${a}
+
+
+ abc
+
+
+
+
+ a ${b}
+
+
+ b
+
+
+ c
+
+
+
+
+ 123 abc 123
+
+
+
+ Hello ${planet}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/sanity-check/html-expected.js b/packages/translator-default/test/fixtures/sanity-check/html-expected.js
new file mode 100644
index 000000000..1cd5e25ac
--- /dev/null
+++ b/packages/translator-default/test/fixtures/sanity-check/html-expected.js
@@ -0,0 +1,129 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import a from "b";
+doThings();
+andStuff();
+
+function more() {
+ abc();
+}
+
+import _marko_escapeStyle from "marko/src/runtime/html/helpers/escape-style-placeholder";
+import _marko_escapeScript from "marko/src/runtime/html/helpers/escape-script-placeholder";
+import _marko_attr from "marko/src/runtime/html/helpers/attr";
+import _marko_class_merge from "marko/src/runtime/helpers/class-value";
+import _marko_dynamic_tag from "marko/src/runtime/helpers/dynamic-tag";
+import _other from "./components/other/index.marko";
+import _marko_load_tag from "marko/src/runtime/helpers/load-tag";
+
+const _other_tag = _marko_load_tag(_other);
+
+import { x as _marko_escapeXml } from "marko/src/runtime/html/helpers/escape-xml";
+import _marko_attrs from "marko/src/runtime/html/helpers/attrs";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "sWzbPUpL",
+ _marko_component = {
+ onCreate() {
+ this.stuff();
+ }
+
+};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w(``);
+
+ function _thing(out, stuff) {
+ out.w(`
`);
+ }
+
+ var b = thing;
+ let c = thing;
+ out.w(`
`);
+ {
+ var d = thing;
+ let e = thing;
+ out.w(`
`);
+ }
+ out.w(`
`);
+
+ _marko_dynamic_tag(out, a, null, out => {
+ out.w("
");
+ }, null, null, _component, "@x");
+
+ _marko_dynamic_tag(out, _thing, () => ({
+ "x": 1
+ }), null, null, null, _component, "12");
+
+ _other_tag({
+ "renderBody": (out, a) => {
+ out.w("
");
+ }
+ }, out, _component, "13", [["click", "handleClick", false, [a, b, ...d]]]);
+
+ _other_tag({
+ "x": 1,
+ ...thing,
+ "b": {
+ a: 1
+ },
+ ...c,
+ "c": {
+ "c": 1,
+ "d": {
+ "d": 1,
+ "renderBody": out => {
+ out.w("
");
+ }
+ },
+ "renderBody": out => {
+ out.w("
");
+ }
+ },
+ "renderBody": (out, b) => {
+ out.w("
");
+ }
+ }, out, _component, "15");
+
+ out.w(`
${_marko_escapeXml(a)}
`);
+
+ if (x === a) {
+ out.w(`a ${_marko_escapeXml(b)}`);
+ } else if (x === 2) {
+ out.w("b");
+ } else {
+ out.w("c");
+ }
+
+ out.w(`
123 abc 123
`);
+
+ if (cond) {
+ out.w(`Hello ${_marko_escapeXml(planet)}`);
+ }
+
+ for (let _steps = (10 - 0) / 2, _step = 0; _step <= _steps; _step++) {
+ const i = 0 + _step * 2;
+ const _keyScope = `[${i}]`;
+ out.w("
");
+ }
+
+ for (const key in obj) {
+ const val = obj[key];
+ const _keyScope2 = `[${key}]`;
+ out.w("
");
+ }
+}, {
+ ___type: _marko_componentType
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/sanity-check/template.marko b/packages/translator-default/test/fixtures/sanity-check/template.marko
new file mode 100644
index 000000000..f185c01ff
--- /dev/null
+++ b/packages/translator-default/test/fixtures/sanity-check/template.marko
@@ -0,0 +1,110 @@
+import a from "b";
+
+
+style {
+ div {
+ color: green;
+ }
+}
+
+
+
+
+
+static {
+ doThings();
+ andStuff();
+ function more() {
+ abc();
+ }
+}
+
+class {
+ onCreate() {
+ this.stuff();
+ }
+}
+
+
+
+
+
+$ var b = thing;
+$ let c = thing;
+
+ $ var d = thing;
+ $ let e = thing;
+
+
+
+
+
+
+
+
+
+
+
+<${a} key="x">
+
+>
+
+
+
+
+
+
+
+
+
+ <@c c=1>
+
+ <@d d=1>
+
+ @d>
+ @c>
+
+
+
+ ${a}
+
+
abc
+
+
+ a ${b}>
+
+ b
+
+ c
+
+
+
+
+
+ 123
+
+ abc
+
+ 123
+
+
+
+
+
+
+ Hello ${planet}
+
+
+
+
+
+
+
+
+
diff --git a/packages/translator-default/test/fixtures/sanity-check/vdom-expected.js b/packages/translator-default/test/fixtures/sanity-check/vdom-expected.js
new file mode 100644
index 000000000..d8b2bf762
--- /dev/null
+++ b/packages/translator-default/test/fixtures/sanity-check/vdom-expected.js
@@ -0,0 +1,196 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import a from "b";
+doThings();
+andStuff();
+
+function more() {
+ abc();
+}
+
+import _marko_class_merge from "marko/src/runtime/helpers/class-value";
+import _marko_dynamic_tag from "marko/src/runtime/helpers/dynamic-tag";
+import _other from "./components/other/index.marko";
+import _marko_load_tag from "marko/src/runtime/helpers/load-tag";
+
+const _other_tag = _marko_load_tag(_other);
+
+import _marko_attrs from "marko/src/runtime/vdom/helpers/attrs";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("sWzbPUpL", () => _marko_template),
+ _marko_component = {
+ onCreate() {
+ this.stuff();
+ }
+
+};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.be("style", {
+ "id": "css"
+ }, "1", component, null, 1);
+ out.t("\n div {\n color: ");
+ out.t(x);
+ out.t(";\n }\n");
+ out.ee();
+ out.be("script", null, "2", component, null, 0);
+ out.t("\n var y = ");
+ out.t(x);
+ out.t(";\n");
+ out.ee();
+
+ function _thing(out, stuff) {
+ out.be("div", {
+ "x": stuff.x
+ }, "4", component, 0, 0);
+ out.ee();
+ }
+
+ var b = thing;
+ let c = thing;
+ out.be("div", {
+ "b": b,
+ "c": c
+ }, "5", component, null, 0);
+ {
+ var d = thing;
+ let e = thing;
+ out.be("div", {
+ "d": d,
+ "e": e
+ }, "6", component, 0, 0);
+ out.ee();
+ }
+ out.ee();
+ out.be("div", null, "7", component, 0, 0, {
+ "onclick": _component.d("click", "handleClick", false, [a, b, ...d])
+ });
+ out.ee();
+ out.be("div", {
+ "id": _component.elId("1")
+ }, "8", component, 0, 1);
+ out.ee();
+ out.be("div", {
+ "class": _marko_class_merge(["a", {
+ b: c,
+ d
+ }]),
+ "style": "a:b;"
+ }, "9", component, 0, 1);
+ out.ee();
+ out.e("input", {
+ "type": "text"
+ }, "10", component, 0, 0);
+
+ _marko_dynamic_tag(out, a, null, out => {
+ out.be("div", null, "11", component, 0, 0);
+ out.ee();
+ }, null, null, _component, "@x");
+
+ _marko_dynamic_tag(out, _thing, () => ({
+ "x": 1
+ }), null, null, null, _component, "12");
+
+ _other_tag({
+ "renderBody": (out, a) => {
+ out.be("div", null, "14", component, 0, 0);
+ out.ee();
+ }
+ }, out, _component, "13", [["click", "handleClick", false, [a, b, ...d]]]);
+
+ _other_tag({
+ "x": 1,
+ ...thing,
+ "b": {
+ a: 1
+ },
+ ...c,
+ "c": {
+ "c": 1,
+ "d": {
+ "d": 1,
+ "renderBody": out => {
+ out.be("div", null, "20", component, 0, 0);
+ out.ee();
+ }
+ },
+ "renderBody": out => {
+ out.be("div", null, "18", component, 0, 0);
+ out.ee();
+ }
+ },
+ "renderBody": (out, b) => {
+ out.be("div", null, "16", component, 0, 0);
+ out.ee();
+ }
+ }, out, _component, "15");
+
+ out.be("div", _marko_attrs({
+ "class": "b c",
+ "a": "[object Object]",
+ "c": "${d}",
+ ...e,
+ ...f(),
+ "id": "a"
+ }), "21", component, null, 0);
+ out.t(a);
+ out.be("div", {
+ "c": "1"
+ }, "22", component, 0, 0);
+ out.ee();
+ out.be("div", {
+ "d": "1"
+ }, "23", component, 0, 0);
+ out.ee();
+
+ if (x === a) {
+ out.t("a ");
+ out.t(b);
+ } else if (x === 2) {
+ out.t("b");
+ } else {
+ out.t("c");
+ }
+
+ out.ee();
+ out.be("div", {
+ "b": "1"
+ }, "25", component, 0, 0);
+ out.ee();
+ out.be("div", null, "26", component, null, 0);
+ out.t("123 abc 123");
+ out.ee();
+ out.be("span", _marko_attrs(abc), "27", component, 0, 0);
+ out.ee();
+
+ if (cond) {
+ out.t("Hello ");
+ out.t(planet);
+ }
+
+ for (let _steps = (10 - 0) / 2, _step = 0; _step <= _steps; _step++) {
+ const i = 0 + _step * 2;
+ const _keyScope = `[${i}]`;
+ out.be("div", {
+ "c": "1"
+ }, "28" + _keyScope, component, 0, 0);
+ out.ee();
+ }
+
+ for (const key in obj) {
+ const val = obj[key];
+ const _keyScope2 = `[${key}]`;
+ out.be("div", {
+ "c": "1"
+ }, "29" + _keyScope2, component, 0, 0);
+ out.ee();
+ }
+}, {
+ ___type: _marko_componentType
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/scriptlet-line-block/generated-expected.marko b/packages/translator-default/test/fixtures/scriptlet-line-block/generated-expected.marko
new file mode 100644
index 000000000..46376b2e4
--- /dev/null
+++ b/packages/translator-default/test/fixtures/scriptlet-line-block/generated-expected.marko
@@ -0,0 +1,10 @@
+$ var foo = 123;
+$ {
+ function bar() {}
+
+ var baz = 456;
+}
+
+ $ console.log('foo');
+ Hello there ${name}
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/scriptlet-line-block/html-expected.js b/packages/translator-default/test/fixtures/scriptlet-line-block/html-expected.js
new file mode 100644
index 000000000..f5a72604e
--- /dev/null
+++ b/packages/translator-default/test/fixtures/scriptlet-line-block/html-expected.js
@@ -0,0 +1,21 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import { x as _marko_escapeXml } from "marko/src/runtime/html/helpers/escape-xml";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "FzjNFfn2",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ var foo = 123;
+
+ function bar() {}
+
+ var baz = 456;
+ out.w("
");
+ console.log('foo');
+ out.w(`Hello there ${_marko_escapeXml(name)}
`);
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/scriptlet-line-block/template.marko b/packages/translator-default/test/fixtures/scriptlet-line-block/template.marko
new file mode 100644
index 000000000..3956753b3
--- /dev/null
+++ b/packages/translator-default/test/fixtures/scriptlet-line-block/template.marko
@@ -0,0 +1,13 @@
+$ var foo = 123;
+
+$ {
+ function bar() {
+
+ }
+ var baz = 456;
+}
+
+
+ $ console.log('foo');
+ Hello there ${name}
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/scriptlet-line-block/vdom-expected.js b/packages/translator-default/test/fixtures/scriptlet-line-block/vdom-expected.js
new file mode 100644
index 000000000..9e25758e3
--- /dev/null
+++ b/packages/translator-default/test/fixtures/scriptlet-line-block/vdom-expected.js
@@ -0,0 +1,27 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("FzjNFfn2", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ var foo = 123;
+
+ function bar() {}
+
+ var baz = 456;
+ out.be("div", null, "0", component, null, 0);
+ console.log('foo');
+ out.t("Hello there ");
+ out.t(name);
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/shorthand-classname/generated-expected.marko b/packages/translator-default/test/fixtures/shorthand-classname/generated-expected.marko
new file mode 100644
index 000000000..59299d05a
--- /dev/null
+++ b/packages/translator-default/test/fixtures/shorthand-classname/generated-expected.marko
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/shorthand-classname/html-expected.js b/packages/translator-default/test/fixtures/shorthand-classname/html-expected.js
new file mode 100644
index 000000000..42592a0d4
--- /dev/null
+++ b/packages/translator-default/test/fixtures/shorthand-classname/html-expected.js
@@ -0,0 +1,15 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_class_merge from "marko/src/runtime/helpers/class-value";
+import _marko_attr from "marko/src/runtime/html/helpers/attr";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "7sGwwCGU",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w(`
`);
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/shorthand-classname/template.marko b/packages/translator-default/test/fixtures/shorthand-classname/template.marko
new file mode 100644
index 000000000..d698310bc
--- /dev/null
+++ b/packages/translator-default/test/fixtures/shorthand-classname/template.marko
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/shorthand-classname/vdom-expected.js b/packages/translator-default/test/fixtures/shorthand-classname/vdom-expected.js
new file mode 100644
index 000000000..f30909b1f
--- /dev/null
+++ b/packages/translator-default/test/fixtures/shorthand-classname/vdom-expected.js
@@ -0,0 +1,58 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_class_merge from "marko/src/runtime/helpers/class-value";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("7sGwwCGU", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.be("div", {
+ "class": "shorthand"
+ }, "0", component, 0, 1);
+ out.ee();
+ out.be("div", {
+ "class": "shorthand1 shorthand2"
+ }, "1", component, 0, 1);
+ out.ee();
+ out.be("div", {
+ "class": "shorthand1 shorthand2 inline"
+ }, "2", component, 0, 1);
+ out.ee();
+ out.be("div", {
+ "class": _marko_class_merge(["shorthand1 shorthand2", dynamic1])
+ }, "3", component, 0, 1);
+ out.ee();
+ out.be("div", {
+ "class": _marko_class_merge([dynamic1, "inline"])
+ }, "4", component, 0, 1);
+ out.ee();
+ out.be("div", {
+ "class": _marko_class_merge([dynamic1, "shorthand2", "inline"])
+ }, "5", component, 0, 1);
+ out.ee();
+ out.be("div", {
+ "class": _marko_class_merge([dynamic1, "shorthand2", dynamic2])
+ }, "6", component, 0, 1);
+ out.ee();
+ out.be("div", {
+ "class": _marko_class_merge([dynamic2, dynamic3, dynamic1, "shorthand2"])
+ }, "7", component, 0, 1);
+ out.ee();
+ out.be("div", {
+ "class": _marko_class_merge([dynamic1, dynamic2, "shorthand"])
+ }, "8", component, 0, 1);
+ out.ee();
+ out.be("div", {
+ "class": _marko_class_merge(["partially-" + dynamic1, "shorthand2", dynamic2])
+ }, "9", component, 0, 1);
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/shorthand-id/generated-expected.marko b/packages/translator-default/test/fixtures/shorthand-id/generated-expected.marko
new file mode 100644
index 000000000..39a1bf204
--- /dev/null
+++ b/packages/translator-default/test/fixtures/shorthand-id/generated-expected.marko
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/shorthand-id/html-expected.js b/packages/translator-default/test/fixtures/shorthand-id/html-expected.js
new file mode 100644
index 000000000..b05e3fd28
--- /dev/null
+++ b/packages/translator-default/test/fixtures/shorthand-id/html-expected.js
@@ -0,0 +1,14 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_attr from "marko/src/runtime/html/helpers/attr";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "nma4wliZ",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w(`
`);
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/shorthand-id/template.marko b/packages/translator-default/test/fixtures/shorthand-id/template.marko
new file mode 100644
index 000000000..2165b9ac6
--- /dev/null
+++ b/packages/translator-default/test/fixtures/shorthand-id/template.marko
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/shorthand-id/vdom-expected.js b/packages/translator-default/test/fixtures/shorthand-id/vdom-expected.js
new file mode 100644
index 000000000..3d27d1e53
--- /dev/null
+++ b/packages/translator-default/test/fixtures/shorthand-id/vdom-expected.js
@@ -0,0 +1,29 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("nma4wliZ", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.be("div", {
+ "id": "shorthand"
+ }, "0", component, 0, 1);
+ out.ee();
+ out.be("div", {
+ "id": dynamic
+ }, "1", component, 0, 1);
+ out.ee();
+ out.be("div", {
+ "id": "partial-" + dynamic
+ }, "2", component, 0, 1);
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/simple-attrs-tag/generated-expected.marko b/packages/translator-default/test/fixtures/simple-attrs-tag/generated-expected.marko
new file mode 100644
index 000000000..95143a06d
--- /dev/null
+++ b/packages/translator-default/test/fixtures/simple-attrs-tag/generated-expected.marko
@@ -0,0 +1,16 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/simple-attrs-tag/html-expected.js b/packages/translator-default/test/fixtures/simple-attrs-tag/html-expected.js
new file mode 100644
index 000000000..87eacc2c5
--- /dev/null
+++ b/packages/translator-default/test/fixtures/simple-attrs-tag/html-expected.js
@@ -0,0 +1,16 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_props from "marko/src/runtime/html/helpers/data-marko";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "YBWmqrQ3",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w(`
`);
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/simple-attrs-tag/template.marko b/packages/translator-default/test/fixtures/simple-attrs-tag/template.marko
new file mode 100644
index 000000000..09e33b4d4
--- /dev/null
+++ b/packages/translator-default/test/fixtures/simple-attrs-tag/template.marko
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/simple-attrs-tag/vdom-expected.js b/packages/translator-default/test/fixtures/simple-attrs-tag/vdom-expected.js
new file mode 100644
index 000000000..22954afc3
--- /dev/null
+++ b/packages/translator-default/test/fixtures/simple-attrs-tag/vdom-expected.js
@@ -0,0 +1,44 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import "marko/src/runtime/vdom/preserve-attrs";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("YBWmqrQ3", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.be("div", {
+ "style": "c:1px;",
+ "class": "b",
+ "id": "a"
+ }, "0", component, 0, 1);
+ out.ee();
+ out.be("div", {
+ "style": "c:1px;",
+ "id": "a"
+ }, "1", component, 0, 1);
+ out.ee();
+ out.be("div", {
+ "style": "c:1px;"
+ }, "2", component, 0, 1);
+ out.ee();
+ out.be("div", {
+ "style": "c:1px;"
+ }, "3", component, 0, 0, {
+ noupdate: ["style"]
+ });
+ out.ee();
+ out.be("div", {
+ "a": "1",
+ "style": "c:1px;"
+ }, "4", component, 0, 0);
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/simple/generated-expected.marko b/packages/translator-default/test/fixtures/simple/generated-expected.marko
new file mode 100644
index 000000000..d8ffc3d46
--- /dev/null
+++ b/packages/translator-default/test/fixtures/simple/generated-expected.marko
@@ -0,0 +1,15 @@
+-- Hello ${input.name}!
+
+
+
+
+
+ No colors!
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/simple/html-expected.js b/packages/translator-default/test/fixtures/simple/html-expected.js
new file mode 100644
index 000000000..7d0e7b712
--- /dev/null
+++ b/packages/translator-default/test/fixtures/simple/html-expected.js
@@ -0,0 +1,29 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import { x as _marko_escapeXml } from "marko/src/runtime/html/helpers/escape-xml";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "Bvz2is5Z",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w(`Hello ${_marko_escapeXml(input.name)}! `);
+
+ if (input.colors.length) {
+ out.w("
");
+ {
+ let _keyValue = 0;
+
+ for (const color of input.colors) {
+ const _keyScope = `[${_keyValue++}]`;
+ out.w(`${_marko_escapeXml(color)} `);
+ }
+ }
+ out.w(" ");
+ } else {
+ out.w("
No colors!
");
+ }
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/simple/template.marko b/packages/translator-default/test/fixtures/simple/template.marko
new file mode 100644
index 000000000..5ad1bb48b
--- /dev/null
+++ b/packages/translator-default/test/fixtures/simple/template.marko
@@ -0,0 +1,18 @@
+---
+Hello ${input.name}!
+
+
+
+
+
+
+ No colors!
+
+
+---
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/simple/vdom-expected.js b/packages/translator-default/test/fixtures/simple/vdom-expected.js
new file mode 100644
index 000000000..f968b47be
--- /dev/null
+++ b/packages/translator-default/test/fixtures/simple/vdom-expected.js
@@ -0,0 +1,39 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("Bvz2is5Z", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.t("Hello ");
+ out.t(input.name);
+ out.t("! ");
+
+ if (input.colors.length) {
+ out.be("ul", null, "0", component, null, 0);
+ {
+ let _keyValue = 0;
+
+ for (const color of input.colors) {
+ const _keyScope = `[${_keyValue++}]`;
+ out.be("li", null, "1" + _keyScope, component, null, 0);
+ out.t(color);
+ out.ee();
+ }
+ }
+ out.ee();
+ } else {
+ out.be("div", null, "2", component, null, 0);
+ out.t("No colors!");
+ out.ee();
+ }
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/split-component-with-component/generated-expected.marko b/packages/translator-default/test/fixtures/split-component-with-component/generated-expected.marko
new file mode 100644
index 000000000..78e7012b8
--- /dev/null
+++ b/packages/translator-default/test/fixtures/split-component-with-component/generated-expected.marko
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/split-component-with-component/html-expected.js b/packages/translator-default/test/fixtures/split-component-with-component/html-expected.js
new file mode 100644
index 000000000..cfab96308
--- /dev/null
+++ b/packages/translator-default/test/fixtures/split-component-with-component/html-expected.js
@@ -0,0 +1,14 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_component from "./template.component.js";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "Q1n_G5T-",
+ _marko_component2 = _marko_component;
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w("
");
+}, {
+ ___type: _marko_componentType,
+ ___split: true
+}, _marko_component2);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/split-component-with-component/template.component-browser.js b/packages/translator-default/test/fixtures/split-component-with-component/template.component-browser.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/translator-default/test/fixtures/split-component-with-component/template.component.js b/packages/translator-default/test/fixtures/split-component-with-component/template.component.js
new file mode 100644
index 000000000..f053ebf79
--- /dev/null
+++ b/packages/translator-default/test/fixtures/split-component-with-component/template.component.js
@@ -0,0 +1 @@
+module.exports = {};
diff --git a/packages/translator-default/test/fixtures/split-component-with-component/template.marko b/packages/translator-default/test/fixtures/split-component-with-component/template.marko
new file mode 100644
index 000000000..78e7012b8
--- /dev/null
+++ b/packages/translator-default/test/fixtures/split-component-with-component/template.marko
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/split-component-with-component/vdom-expected.js b/packages/translator-default/test/fixtures/split-component-with-component/vdom-expected.js
new file mode 100644
index 000000000..ff283cab7
--- /dev/null
+++ b/packages/translator-default/test/fixtures/split-component-with-component/vdom-expected.js
@@ -0,0 +1,21 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_component from "./template.component.js";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+import _marko_split_component from "./template.component-browser.js";
+
+const _marko_componentType = _marko_registerComponent("Q1n_G5T-", () => _marko_split_component),
+ _marko_component2 = _marko_component;
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.be("div", null, "0", component, 0, 0);
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___split: true
+}, _marko_component2);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component2, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/split-component/generated-expected.marko b/packages/translator-default/test/fixtures/split-component/generated-expected.marko
new file mode 100644
index 000000000..78e7012b8
--- /dev/null
+++ b/packages/translator-default/test/fixtures/split-component/generated-expected.marko
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/split-component/html-expected.js b/packages/translator-default/test/fixtures/split-component/html-expected.js
new file mode 100644
index 000000000..943badfb9
--- /dev/null
+++ b/packages/translator-default/test/fixtures/split-component/html-expected.js
@@ -0,0 +1,13 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "rFQb-wzZ",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w("
");
+}, {
+ ___type: _marko_componentType,
+ ___split: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/split-component/template.component-browser.js b/packages/translator-default/test/fixtures/split-component/template.component-browser.js
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/translator-default/test/fixtures/split-component/template.marko b/packages/translator-default/test/fixtures/split-component/template.marko
new file mode 100644
index 000000000..78e7012b8
--- /dev/null
+++ b/packages/translator-default/test/fixtures/split-component/template.marko
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/split-component/vdom-expected.js b/packages/translator-default/test/fixtures/split-component/vdom-expected.js
new file mode 100644
index 000000000..d4e8a0a05
--- /dev/null
+++ b/packages/translator-default/test/fixtures/split-component/vdom-expected.js
@@ -0,0 +1,20 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+import _marko_split_component from "./template.component-browser.js";
+
+const _marko_componentType = _marko_registerComponent("rFQb-wzZ", () => _marko_split_component),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.be("div", null, "0", component, 0, 0);
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___split: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/static-tag/generated-expected.marko b/packages/translator-default/test/fixtures/static-tag/generated-expected.marko
new file mode 100644
index 000000000..853964784
--- /dev/null
+++ b/packages/translator-default/test/fixtures/static-tag/generated-expected.marko
@@ -0,0 +1,6 @@
+static var foo = 123;
+static {
+ function bar() {}
+
+ var baz = 456;
+}
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/static-tag/html-expected.js b/packages/translator-default/test/fixtures/static-tag/html-expected.js
new file mode 100644
index 000000000..98423cea3
--- /dev/null
+++ b/packages/translator-default/test/fixtures/static-tag/html-expected.js
@@ -0,0 +1,16 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+var foo = 123;
+
+function bar() {}
+
+var baz = 456;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "aCHFEvgT",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/static-tag/template.marko b/packages/translator-default/test/fixtures/static-tag/template.marko
new file mode 100644
index 000000000..b273a9aa8
--- /dev/null
+++ b/packages/translator-default/test/fixtures/static-tag/template.marko
@@ -0,0 +1,8 @@
+static var foo = 123;
+
+static {
+ function bar() {
+
+ }
+ var baz = 456;
+}
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/static-tag/vdom-expected.js b/packages/translator-default/test/fixtures/static-tag/vdom-expected.js
new file mode 100644
index 000000000..9d06c4e81
--- /dev/null
+++ b/packages/translator-default/test/fixtures/static-tag/vdom-expected.js
@@ -0,0 +1,21 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+var foo = 123;
+
+function bar() {}
+
+var baz = 456;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("aCHFEvgT", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/style-block-empty/generated-expected.marko b/packages/translator-default/test/fixtures/style-block-empty/generated-expected.marko
new file mode 100644
index 000000000..8da32edb2
--- /dev/null
+++ b/packages/translator-default/test/fixtures/style-block-empty/generated-expected.marko
@@ -0,0 +1,3 @@
+style.less {
+}
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/style-block-empty/html-expected.js b/packages/translator-default/test/fixtures/style-block-empty/html-expected.js
new file mode 100644
index 000000000..86ebe28f6
--- /dev/null
+++ b/packages/translator-default/test/fixtures/style-block-empty/html-expected.js
@@ -0,0 +1,13 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "ZEzG2kfv",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w("
");
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/style-block-empty/template.marko b/packages/translator-default/test/fixtures/style-block-empty/template.marko
new file mode 100644
index 000000000..ac9662d84
--- /dev/null
+++ b/packages/translator-default/test/fixtures/style-block-empty/template.marko
@@ -0,0 +1,4 @@
+style.less {
+}
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/style-block-empty/vdom-expected.js b/packages/translator-default/test/fixtures/style-block-empty/vdom-expected.js
new file mode 100644
index 000000000..f83eb8c9f
--- /dev/null
+++ b/packages/translator-default/test/fixtures/style-block-empty/vdom-expected.js
@@ -0,0 +1,21 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("ZEzG2kfv", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.be("div", {
+ "class": "test"
+ }, "1", component, 0, 1);
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/style-block-with-styles/generated-expected.marko b/packages/translator-default/test/fixtures/style-block-with-styles/generated-expected.marko
new file mode 100644
index 000000000..c47e34a9f
--- /dev/null
+++ b/packages/translator-default/test/fixtures/style-block-with-styles/generated-expected.marko
@@ -0,0 +1,6 @@
+style {
+ .test {
+ color: green;
+ }
+}
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/style-block-with-styles/html-expected.js b/packages/translator-default/test/fixtures/style-block-with-styles/html-expected.js
new file mode 100644
index 000000000..577029315
--- /dev/null
+++ b/packages/translator-default/test/fixtures/style-block-with-styles/html-expected.js
@@ -0,0 +1,13 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "wKIYNnQ9",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w("
");
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/style-block-with-styles/template.marko b/packages/translator-default/test/fixtures/style-block-with-styles/template.marko
new file mode 100644
index 000000000..51e8951e2
--- /dev/null
+++ b/packages/translator-default/test/fixtures/style-block-with-styles/template.marko
@@ -0,0 +1,7 @@
+style {
+ .test {
+ color: green;
+ }
+}
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/style-block-with-styles/vdom-expected.js b/packages/translator-default/test/fixtures/style-block-with-styles/vdom-expected.js
new file mode 100644
index 000000000..1dbb7ca45
--- /dev/null
+++ b/packages/translator-default/test/fixtures/style-block-with-styles/vdom-expected.js
@@ -0,0 +1,21 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("wKIYNnQ9", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.be("div", {
+ "class": "test"
+ }, "1", component, 0, 1);
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/svg-tag/generated-expected.marko b/packages/translator-default/test/fixtures/svg-tag/generated-expected.marko
new file mode 100644
index 000000000..f9c1277b7
--- /dev/null
+++ b/packages/translator-default/test/fixtures/svg-tag/generated-expected.marko
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+ Test
+
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/svg-tag/html-expected.js b/packages/translator-default/test/fixtures/svg-tag/html-expected.js
new file mode 100644
index 000000000..3205e3268
--- /dev/null
+++ b/packages/translator-default/test/fixtures/svg-tag/html-expected.js
@@ -0,0 +1,13 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "hdShPuzM",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w("
Test ");
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/svg-tag/template.marko b/packages/translator-default/test/fixtures/svg-tag/template.marko
new file mode 100644
index 000000000..eaf91e0c4
--- /dev/null
+++ b/packages/translator-default/test/fixtures/svg-tag/template.marko
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+ Test
+
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/svg-tag/vdom-expected.js b/packages/translator-default/test/fixtures/svg-tag/vdom-expected.js
new file mode 100644
index 000000000..735058cba
--- /dev/null
+++ b/packages/translator-default/test/fixtures/svg-tag/vdom-expected.js
@@ -0,0 +1,43 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("hdShPuzM", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.be("svg", {
+ "height": "100",
+ "width": "100"
+ }, "0", component, null, 0);
+ out.e("circle", {
+ "cx": "50",
+ "cy": "50",
+ "r": "40",
+ "stroke": "black",
+ "stroke-width": "3",
+ "fill": "red"
+ }, "1", component, 0, 0);
+ out.be("a", null, "2", component, 0, 0);
+ out.ee();
+ out.be("style", null, "3", component, null, 0);
+ out.t("div { color: green }");
+ out.ee();
+ out.be("script", null, "4", component, null, 0);
+ out.t("alert(\"Hello\");");
+ out.ee();
+ out.be("title", null, "5", component, null, 0);
+ out.t("Test");
+ out.ee();
+ out.ee();
+ out.be("a", null, "6", component, 0, 0);
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/tag-block-scoping/generated-expected.marko b/packages/translator-default/test/fixtures/tag-block-scoping/generated-expected.marko
new file mode 100644
index 000000000..b7596c494
--- /dev/null
+++ b/packages/translator-default/test/fixtures/tag-block-scoping/generated-expected.marko
@@ -0,0 +1,7 @@
+$ var b = thing;
+$ let c = thing;
+
+ $ var d = thing;
+ $ let e = thing;
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/tag-block-scoping/html-expected.js b/packages/translator-default/test/fixtures/tag-block-scoping/html-expected.js
new file mode 100644
index 000000000..70717871b
--- /dev/null
+++ b/packages/translator-default/test/fixtures/tag-block-scoping/html-expected.js
@@ -0,0 +1,22 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_attr from "marko/src/runtime/html/helpers/attr";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "TfIqXVBx",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ var b = thing;
+ let c = thing;
+ out.w(`
`);
+ {
+ var d = thing;
+ let e = thing;
+ out.w(`
`);
+ }
+ out.w("
");
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/tag-block-scoping/template.marko b/packages/translator-default/test/fixtures/tag-block-scoping/template.marko
new file mode 100644
index 000000000..b7596c494
--- /dev/null
+++ b/packages/translator-default/test/fixtures/tag-block-scoping/template.marko
@@ -0,0 +1,7 @@
+$ var b = thing;
+$ let c = thing;
+
+ $ var d = thing;
+ $ let e = thing;
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/tag-block-scoping/vdom-expected.js b/packages/translator-default/test/fixtures/tag-block-scoping/vdom-expected.js
new file mode 100644
index 000000000..327a42681
--- /dev/null
+++ b/packages/translator-default/test/fixtures/tag-block-scoping/vdom-expected.js
@@ -0,0 +1,33 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("TfIqXVBx", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ var b = thing;
+ let c = thing;
+ out.be("div", {
+ "b": b,
+ "c": c
+ }, "0", component, null, 0);
+ {
+ var d = thing;
+ let e = thing;
+ out.be("div", {
+ "d": d,
+ "e": e
+ }, "1", component, 0, 0);
+ out.ee();
+ }
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/textarea-tag/generated-expected.marko b/packages/translator-default/test/fixtures/textarea-tag/generated-expected.marko
new file mode 100644
index 000000000..9120ffbf0
--- /dev/null
+++ b/packages/translator-default/test/fixtures/textarea-tag/generated-expected.marko
@@ -0,0 +1,5 @@
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/textarea-tag/html-expected.js b/packages/translator-default/test/fixtures/textarea-tag/html-expected.js
new file mode 100644
index 000000000..9d78b1ffe
--- /dev/null
+++ b/packages/translator-default/test/fixtures/textarea-tag/html-expected.js
@@ -0,0 +1,13 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "exzxXYhB",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w("
");
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/textarea-tag/template.marko b/packages/translator-default/test/fixtures/textarea-tag/template.marko
new file mode 100644
index 000000000..4080fcefa
--- /dev/null
+++ b/packages/translator-default/test/fixtures/textarea-tag/template.marko
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/textarea-tag/vdom-expected.js b/packages/translator-default/test/fixtures/textarea-tag/vdom-expected.js
new file mode 100644
index 000000000..df95fde09
--- /dev/null
+++ b/packages/translator-default/test/fixtures/textarea-tag/vdom-expected.js
@@ -0,0 +1,20 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("exzxXYhB", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.be("textarea", null, "0", component, null, 0);
+ out.t("\n hello world\n");
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/top-level-text/generated-expected.marko b/packages/translator-default/test/fixtures/top-level-text/generated-expected.marko
new file mode 100644
index 000000000..7db3fbf4b
--- /dev/null
+++ b/packages/translator-default/test/fixtures/top-level-text/generated-expected.marko
@@ -0,0 +1 @@
+-- Hello John
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/top-level-text/html-expected.js b/packages/translator-default/test/fixtures/top-level-text/html-expected.js
new file mode 100644
index 000000000..178a51a49
--- /dev/null
+++ b/packages/translator-default/test/fixtures/top-level-text/html-expected.js
@@ -0,0 +1,13 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "-2ik31Wg",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w("Hello John");
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/top-level-text/template.marko b/packages/translator-default/test/fixtures/top-level-text/template.marko
new file mode 100644
index 000000000..7db3fbf4b
--- /dev/null
+++ b/packages/translator-default/test/fixtures/top-level-text/template.marko
@@ -0,0 +1 @@
+-- Hello John
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/top-level-text/vdom-expected.js b/packages/translator-default/test/fixtures/top-level-text/vdom-expected.js
new file mode 100644
index 000000000..b3e8bef70
--- /dev/null
+++ b/packages/translator-default/test/fixtures/top-level-text/vdom-expected.js
@@ -0,0 +1,18 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("-2ik31Wg", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.t("Hello John");
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/while-tag/generated-expected.marko b/packages/translator-default/test/fixtures/while-tag/generated-expected.marko
new file mode 100644
index 000000000..dbba37489
--- /dev/null
+++ b/packages/translator-default/test/fixtures/while-tag/generated-expected.marko
@@ -0,0 +1,5 @@
+$ let i = 0;
+
+ $ i++;
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/while-tag/html-expected.js b/packages/translator-default/test/fixtures/while-tag/html-expected.js
new file mode 100644
index 000000000..ec308f658
--- /dev/null
+++ b/packages/translator-default/test/fixtures/while-tag/html-expected.js
@@ -0,0 +1,20 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "wL7Y18qS",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ let i = 0;
+ let _keyValue = 0;
+
+ while (i < 10) {
+ const _keyScope = `[${_keyValue++}]`;
+ i++;
+ out.w("
");
+ }
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/while-tag/template.marko b/packages/translator-default/test/fixtures/while-tag/template.marko
new file mode 100644
index 000000000..dbba37489
--- /dev/null
+++ b/packages/translator-default/test/fixtures/while-tag/template.marko
@@ -0,0 +1,5 @@
+$ let i = 0;
+
+ $ i++;
+
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/while-tag/vdom-expected.js b/packages/translator-default/test/fixtures/while-tag/vdom-expected.js
new file mode 100644
index 000000000..c7a175388
--- /dev/null
+++ b/packages/translator-default/test/fixtures/while-tag/vdom-expected.js
@@ -0,0 +1,26 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("wL7Y18qS", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ let i = 0;
+ let _keyValue = 0;
+
+ while (i < 10) {
+ const _keyScope = `[${_keyValue++}]`;
+ i++;
+ out.be("div", null, "0" + _keyScope, component, 0, 0);
+ out.ee();
+ }
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/white-space-test/generated-expected.marko b/packages/translator-default/test/fixtures/white-space-test/generated-expected.marko
new file mode 100644
index 000000000..29b91cd8e
--- /dev/null
+++ b/packages/translator-default/test/fixtures/white-space-test/generated-expected.marko
@@ -0,0 +1,34 @@
+
+
+
+ Hello
+
+
+
+ This should
+ be preserved
+
+
+
+
+
+ $ scriptletA();
+ $ scriptletB();
+ Hello
+ $ scriptletC();
+ World
+ $ scriptletD();
+
+
+-- Hello World! ${a}${b}
+
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/white-space-test/html-expected.js b/packages/translator-default/test/fixtures/white-space-test/html-expected.js
new file mode 100644
index 000000000..a29e2546f
--- /dev/null
+++ b/packages/translator-default/test/fixtures/white-space-test/html-expected.js
@@ -0,0 +1,21 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import { x as _marko_escapeXml } from "marko/src/runtime/html/helpers/escape-xml";
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/html";
+const _marko_componentType = "01WxYw7m",
+ _marko_component = {};
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.w("
Hello
\n This should \n be preserved\n ");
+ scriptletA();
+ scriptletB();
+ out.w("Hello ");
+ scriptletC();
+ out.w("World");
+ scriptletD();
+ out.w(`
Hello World! ${_marko_escapeXml(a)}${_marko_escapeXml(b)}
`);
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
\ No newline at end of file
diff --git a/packages/translator-default/test/fixtures/white-space-test/template.marko b/packages/translator-default/test/fixtures/white-space-test/template.marko
new file mode 100644
index 000000000..9754c98aa
--- /dev/null
+++ b/packages/translator-default/test/fixtures/white-space-test/template.marko
@@ -0,0 +1,39 @@
+
+
+
+
+ Hello
+
+
+
+ This should
+ be preserved
+
+
+
+
+
+
+ $ scriptletA();
+ $ scriptletB();
+ Hello
+ $ scriptletC();
+ World
+ $ scriptletD();
+
+
+---
+
+Hello
+ World!
+${a}${b}
+
+---
diff --git a/packages/translator-default/test/fixtures/white-space-test/vdom-expected.js b/packages/translator-default/test/fixtures/white-space-test/vdom-expected.js
new file mode 100644
index 000000000..81f29a7ef
--- /dev/null
+++ b/packages/translator-default/test/fixtures/white-space-test/vdom-expected.js
@@ -0,0 +1,50 @@
+const _marko_template = _t(__filename);
+
+export default _marko_template;
+import _marko_renderer from "marko/src/runtime/components/renderer";
+import { t as _t } from "marko/src/runtime/dom";
+import { r as _marko_registerComponent } from "marko/src/runtime/components/registry-browser";
+
+const _marko_componentType = _marko_registerComponent("01WxYw7m", () => _marko_template),
+ _marko_component = {};
+
+_marko_template._ = _marko_renderer(function (input, out, _component, component, state) {
+ out.be("div", null, "0", component, null, 0);
+ out.be("div", null, "1", component, null, 0);
+ out.t("Hello ");
+ out.be("div", null, "2", component, null, 0);
+ out.t(" ");
+ out.ee();
+ out.t(" World");
+ out.ee();
+ out.be("div", null, "3", component, null, 0);
+ out.t(" Hello");
+ out.ee();
+ out.be("pre", null, "4", component, null, 0);
+ out.t("\n This should \n be preserved\n ");
+ out.ee();
+ out.be("div", null, "5", component, null, 0);
+ out.be("div", null, "6", component, null, 0);
+ out.t("Hello ");
+ out.ee();
+ out.ee();
+ out.ee();
+ out.be("div", null, "7", component, null, 0);
+ scriptletA();
+ scriptletB();
+ out.t("Hello ");
+ scriptletC();
+ out.t("World");
+ scriptletD();
+ out.ee();
+ out.t(" Hello World! ");
+ out.t(a);
+ out.t(b);
+ out.be("div", null, "8", component, 0, 0);
+ out.ee();
+}, {
+ ___type: _marko_componentType,
+ ___implicit: true
+}, _marko_component);
+import _marko_defineComponent from "marko/src/runtime/components/defineComponent";
+_marko_template.Component = _marko_defineComponent(_marko_component, _marko_template._);
\ No newline at end of file
diff --git a/packages/translator-default/test/package.json b/packages/translator-default/test/package.json
new file mode 100644
index 000000000..9cab77831
--- /dev/null
+++ b/packages/translator-default/test/package.json
@@ -0,0 +1,5 @@
+{
+ "name": "marko-test",
+ "description": "Template ID checksums include the package name and version. This file ensures that is consistent for snapshot tests",
+ "version": "1.0.0"
+}
diff --git a/scripts/build.js b/scripts/build.js
deleted file mode 100644
index 8c0f05881..000000000
--- a/scripts/build.js
+++ /dev/null
@@ -1,57 +0,0 @@
-"use strict";
-const fs = require("fs");
-const path = require("path");
-const buildDir = require("./util").buildDir;
-const babelOptions = {
- plugins: [
- [
- "minprops",
- {
- matchPrefix: "___",
- prefix: "",
- suffix: "_",
- hello: "world",
- context: "marko"
- }
- ],
- require.resolve("./babel-plugin-marko-debug")
- ]
-};
-
-var target = process.argv[2];
-
-var shouldBuildSrc = true;
-var shouldBuildTest = true;
-
-if (target === "src") {
- shouldBuildTest = false;
-}
-
-if (shouldBuildSrc) {
- buildDir("src", "dist", {
- babelExclude: ["/core-tags/core/async/client-reorder-runtime.min.js"],
- babelOptions
- });
-}
-
-fs.writeFileSync(
- path.join(__dirname, "../packages/marko/dist/build.json"),
- JSON.stringify({ isDebug: false }, null, 4),
- { encoding: "utf8" }
-);
-
-if (shouldBuildTest) {
- buildDir("test", "test-dist", {
- babelExclude: ["*expected*.*", "input.js*"],
- exclude: [
- "/generated",
- "**/node_modules/**",
- "*.marko.js",
- "*.skip",
- "*.generated.*",
- "*actual*.*",
- "actualized-expected.html*"
- ],
- babelOptions
- });
-}
diff --git a/scripts/rename-vdom-expectations.js b/scripts/rename-vdom-expectations.js
deleted file mode 100644
index 21ad86abe..000000000
--- a/scripts/rename-vdom-expectations.js
+++ /dev/null
@@ -1,25 +0,0 @@
-const fixtureDirs = [
- "test/render/fixtures",
- "test/render/fixtures-async",
- "test/render/fixtures-async-deprecated",
- "test/render/fixtures-deprecated"
-];
-
-const exists = require("fs").existsSync;
-const join = require("path").join;
-const exec = require("child_process").execSync;
-
-fixtureDirs.forEach(fixtureDir => {
- const fixtures = require("fs").readdirSync(fixtureDir);
- fixtures.forEach(fixtureName => {
- const fixturePath = join(
- fixtureDir,
- fixtureName,
- "vdom-expected.generated.html"
- );
- if (exists(fixturePath)) {
- const newPath = fixturePath.replace(/\.generated/, "");
- exec(`mv ${fixturePath} ${newPath}`);
- }
- });
-});
diff --git a/scripts/util.js b/scripts/util.js
deleted file mode 100644
index 10fffef88..000000000
--- a/scripts/util.js
+++ /dev/null
@@ -1,106 +0,0 @@
-/* eslint-disable no-console */
-
-const shelljs = require("shelljs");
-const mkdir = shelljs.mkdir;
-const rm = shelljs.rm;
-const cp = shelljs.cp;
-const path = require("path");
-const fs = require("fs");
-const babel = require("babel-core");
-const mm = require("micromatch");
-
-const rootDir = path.join(__dirname, "../packages/marko");
-
-function babelTransformFile(sourceFile, targetFile, babelOptions) {
- babelOptions = Object.assign({}, babelOptions);
- babelOptions.filename = sourceFile;
- var source = fs.readFileSync(sourceFile, "utf-8");
- var transformed = babel.transform(source, babelOptions).code;
-
- fs.writeFileSync(targetFile, transformed, { encoding: "utf8" });
-}
-
-function createMatcher(patterns) {
- var matchers = patterns.map(pattern => {
- return mm.matcher(pattern, { matchBase: true });
- });
-
- return function isMatch(file) {
- for (var i = 0; i < matchers.length; i++) {
- if (matchers[i](file)) {
- return true;
- }
- }
-
- return false;
- };
-}
-
-function findFiles(dir, callback, isExcluded) {
- function findFilesHelper(parentDir, parentRelativePath) {
- var names = fs.readdirSync(parentDir);
- for (var i = 0; i < names.length; i++) {
- var name = names[i];
- var file = path.join(parentDir, name);
- var relativePath = path.join(parentRelativePath, name);
-
- if (isExcluded && isExcluded(relativePath)) {
- continue;
- }
-
- var stat = fs.statSync(file);
-
- callback(file, relativePath, stat);
-
- if (stat.isDirectory()) {
- findFilesHelper(file, relativePath);
- }
- }
- }
-
- findFilesHelper(dir, "/");
-}
-
-exports.buildDir = function buildDir(sourceName, targetName, options) {
- const sourceDir = path.join(rootDir, sourceName);
- const distDir = path.join(rootDir, targetName);
-
- options = options || {};
-
- const babelOptions = options.babelOptions || {};
-
- var isExcluded;
- var isBabelExcluded;
-
- if (options.exclude) {
- isExcluded = createMatcher(options.exclude);
- }
-
- if (options.babelExclude) {
- isBabelExcluded = createMatcher(options.babelExclude);
- }
-
- rm("-rf", distDir);
-
- findFiles(
- sourceDir,
- function(sourceFile, relativePath, stat) {
- var targetFile = path.join(distDir, relativePath);
- var targetDir = path.dirname(targetFile);
-
- if (stat.isFile()) {
- mkdir("-p", targetDir);
-
- var ext = path.extname(relativePath);
- if (ext !== ".js" || isBabelExcluded(relativePath)) {
- console.log("Copying file:", relativePath);
- cp(sourceFile, targetDir + "/");
- } else {
- console.log("Running babel: " + relativePath);
- babelTransformFile(sourceFile, targetFile, babelOptions);
- }
- }
- },
- isExcluded
- );
-};