@builder.io/mitosis 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/dist/src/constants/media-sizes.js +4 -5
  2. package/dist/src/generators/alpine/generate.js +114 -132
  3. package/dist/src/generators/alpine/render-mount-hook.js +8 -5
  4. package/dist/src/generators/alpine/render-update-hooks.js +13 -13
  5. package/dist/src/generators/angular/helpers.js +19 -9
  6. package/dist/src/generators/angular/index.js +599 -584
  7. package/dist/src/generators/builder.js +200 -165
  8. package/dist/src/generators/context/angular.js +32 -26
  9. package/dist/src/generators/context/helpers/context-with-symbol-key.js +25 -21
  10. package/dist/src/generators/context/qwik.js +21 -21
  11. package/dist/src/generators/context/react.js +22 -22
  12. package/dist/src/generators/context/rsc.js +20 -22
  13. package/dist/src/generators/context/solid.js +22 -22
  14. package/dist/src/generators/context/svelte.js +33 -28
  15. package/dist/src/generators/context/vue.js +1 -1
  16. package/dist/src/generators/helpers/context.js +6 -13
  17. package/dist/src/generators/helpers/functions.js +8 -8
  18. package/dist/src/generators/helpers/on-mount.js +9 -5
  19. package/dist/src/generators/helpers/rsc.js +7 -9
  20. package/dist/src/generators/html.js +995 -534
  21. package/dist/src/generators/liquid.js +81 -79
  22. package/dist/src/generators/lit/collect-class-string.js +10 -12
  23. package/dist/src/generators/lit/generate.js +204 -159
  24. package/dist/src/generators/marko/generate.js +193 -183
  25. package/dist/src/generators/minify.js +5 -9
  26. package/dist/src/generators/mitosis.js +135 -134
  27. package/dist/src/generators/qwik/component-generator.js +159 -154
  28. package/dist/src/generators/qwik/component.js +51 -81
  29. package/dist/src/generators/qwik/directives.js +68 -84
  30. package/dist/src/generators/qwik/helpers/add-prevent-default.js +6 -7
  31. package/dist/src/generators/qwik/helpers/convert-method-to-function.js +38 -38
  32. package/dist/src/generators/qwik/helpers/handlers.js +16 -25
  33. package/dist/src/generators/qwik/helpers/stable-inject.js +7 -8
  34. package/dist/src/generators/qwik/helpers/stable-serialize.js +7 -8
  35. package/dist/src/generators/qwik/helpers/state.js +36 -43
  36. package/dist/src/generators/qwik/helpers/styles.js +19 -40
  37. package/dist/src/generators/qwik/jsx.js +63 -75
  38. package/dist/src/generators/qwik/src-generator.js +134 -167
  39. package/dist/src/generators/react/blocks.js +122 -127
  40. package/dist/src/generators/react/generator.js +314 -259
  41. package/dist/src/generators/react/helpers.js +23 -28
  42. package/dist/src/generators/react/state.js +34 -51
  43. package/dist/src/generators/react-native/index.js +72 -84
  44. package/dist/src/generators/react-native/sanitize-react-native-block-styles.js +14 -26
  45. package/dist/src/generators/rsc.js +30 -36
  46. package/dist/src/generators/solid/blocks.js +46 -43
  47. package/dist/src/generators/solid/helpers/styles.js +11 -11
  48. package/dist/src/generators/solid/index.js +199 -190
  49. package/dist/src/generators/solid/state/helpers.js +76 -90
  50. package/dist/src/generators/solid/state/signals.js +30 -37
  51. package/dist/src/generators/solid/state/state.js +35 -48
  52. package/dist/src/generators/solid/state/store.js +40 -46
  53. package/dist/src/generators/stencil/collect-class-string.js +10 -12
  54. package/dist/src/generators/stencil/generate.js +158 -145
  55. package/dist/src/generators/svelte/blocks.js +146 -144
  56. package/dist/src/generators/svelte/helpers.js +10 -17
  57. package/dist/src/generators/svelte/svelte.js +321 -287
  58. package/dist/src/generators/swift-ui.js +162 -101
  59. package/dist/src/generators/taro.js +32 -36
  60. package/dist/src/generators/template.js +71 -74
  61. package/dist/src/generators/vue/blocks.js +116 -107
  62. package/dist/src/generators/vue/compositionApi.js +67 -50
  63. package/dist/src/generators/vue/helpers.js +71 -96
  64. package/dist/src/generators/vue/optionsApi.js +134 -105
  65. package/dist/src/generators/vue/vue.js +210 -207
  66. package/dist/src/helpers/babel-transform.js +40 -63
  67. package/dist/src/helpers/bindings.js +4 -12
  68. package/dist/src/helpers/camel-case.js +4 -5
  69. package/dist/src/helpers/capitalize.js +1 -1
  70. package/dist/src/helpers/component-file-extensions.js +23 -35
  71. package/dist/src/helpers/create-mitosis-component.js +22 -26
  72. package/dist/src/helpers/create-mitosis-context.js +5 -12
  73. package/dist/src/helpers/create-mitosis-node.js +10 -12
  74. package/dist/src/helpers/dash-case.js +2 -2
  75. package/dist/src/helpers/dedent.js +18 -22
  76. package/dist/src/helpers/event-handlers.js +1 -1
  77. package/dist/src/helpers/fast-clone.js +1 -1
  78. package/dist/src/helpers/filter-empty-text-nodes.js +2 -2
  79. package/dist/src/helpers/generic-format.js +7 -8
  80. package/dist/src/helpers/get-bindings.js +4 -4
  81. package/dist/src/helpers/get-components-used.js +3 -3
  82. package/dist/src/helpers/get-components.js +4 -4
  83. package/dist/src/helpers/get-custom-imports.js +10 -12
  84. package/dist/src/helpers/get-prop-functions.js +7 -8
  85. package/dist/src/helpers/get-props-ref.js +8 -8
  86. package/dist/src/helpers/get-props.js +12 -13
  87. package/dist/src/helpers/get-refs.js +4 -4
  88. package/dist/src/helpers/get-state-object-string.js +42 -61
  89. package/dist/src/helpers/get-state-used.js +7 -8
  90. package/dist/src/helpers/get-styles.js +6 -6
  91. package/dist/src/helpers/getters-to-functions.js +8 -12
  92. package/dist/src/helpers/handle-missing-state.js +3 -3
  93. package/dist/src/helpers/has-bindings-text.js +6 -6
  94. package/dist/src/helpers/has-component.js +4 -4
  95. package/dist/src/helpers/has-props.js +3 -3
  96. package/dist/src/helpers/has-stateful-dom.js +4 -4
  97. package/dist/src/helpers/has.js +3 -3
  98. package/dist/src/helpers/indent.js +2 -3
  99. package/dist/src/helpers/is-children.js +4 -5
  100. package/dist/src/helpers/is-component.js +1 -1
  101. package/dist/src/helpers/is-html-attribute.js +2 -11
  102. package/dist/src/helpers/is-mitosis-node.js +1 -1
  103. package/dist/src/helpers/is-root-text-node.js +1 -1
  104. package/dist/src/helpers/is-upper-case.js +1 -1
  105. package/dist/src/helpers/is-valid-attribute-name.js +1 -1
  106. package/dist/src/helpers/json.js +2 -2
  107. package/dist/src/helpers/map-refs.js +29 -40
  108. package/dist/src/helpers/merge-options.js +20 -31
  109. package/dist/src/helpers/mitosis-imports.js +5 -6
  110. package/dist/src/helpers/nodes/for.js +2 -3
  111. package/dist/src/helpers/nullable.js +1 -3
  112. package/dist/src/helpers/on-event.js +32 -36
  113. package/dist/src/helpers/output.js +4 -5
  114. package/dist/src/helpers/parse-node.js +13 -5
  115. package/dist/src/helpers/parsers.js +10 -14
  116. package/dist/src/helpers/patterns.js +6 -8
  117. package/dist/src/helpers/plugins/process-code/index.js +114 -120
  118. package/dist/src/helpers/plugins/process-signals.js +114 -125
  119. package/dist/src/helpers/plugins/process-target-blocks.js +18 -20
  120. package/dist/src/helpers/process-http-requests.js +8 -4
  121. package/dist/src/helpers/remove-surrounding-block.js +2 -2
  122. package/dist/src/helpers/render-imports.js +99 -111
  123. package/dist/src/helpers/replace-identifiers.js +40 -49
  124. package/dist/src/helpers/replace-new-lines-in-strings.js +3 -3
  125. package/dist/src/helpers/signals/signals.js +27 -35
  126. package/dist/src/helpers/slots.js +11 -20
  127. package/dist/src/helpers/state.js +1 -3
  128. package/dist/src/helpers/strip-meta-properties.js +6 -6
  129. package/dist/src/helpers/strip-state-and-props-refs.js +21 -32
  130. package/dist/src/helpers/styles/collect-css.js +39 -44
  131. package/dist/src/helpers/styles/collect-styled-components.js +30 -28
  132. package/dist/src/helpers/styles/helpers.js +23 -29
  133. package/dist/src/helpers/trace-reference-to-module-path.js +3 -4
  134. package/dist/src/helpers/transform-state-setters.js +16 -19
  135. package/dist/src/helpers/traverse-nodes.js +2 -2
  136. package/dist/src/helpers/try-prettier-format.js +3 -3
  137. package/dist/src/helpers/typescript-project.js +25 -25
  138. package/dist/src/helpers/typescript.js +1 -3
  139. package/dist/src/modules/plugins.js +20 -28
  140. package/dist/src/parsers/angular.js +49 -57
  141. package/dist/src/parsers/builder/builder.js +448 -343
  142. package/dist/src/parsers/builder/helpers.js +10 -10
  143. package/dist/src/parsers/context.js +15 -17
  144. package/dist/src/parsers/jsx/ast.js +11 -11
  145. package/dist/src/parsers/jsx/component-types.js +22 -32
  146. package/dist/src/parsers/jsx/context.js +12 -12
  147. package/dist/src/parsers/jsx/element-parser.js +43 -54
  148. package/dist/src/parsers/jsx/exports.js +12 -14
  149. package/dist/src/parsers/jsx/function-parser.js +108 -119
  150. package/dist/src/parsers/jsx/helpers.js +11 -13
  151. package/dist/src/parsers/jsx/hooks/helpers.js +14 -16
  152. package/dist/src/parsers/jsx/hooks/index.js +34 -44
  153. package/dist/src/parsers/jsx/hooks/use-target.js +27 -27
  154. package/dist/src/parsers/jsx/imports.js +7 -17
  155. package/dist/src/parsers/jsx/jsx.js +92 -91
  156. package/dist/src/parsers/jsx/props-types.js +8 -10
  157. package/dist/src/parsers/jsx/props.js +15 -23
  158. package/dist/src/parsers/jsx/signals.js +28 -29
  159. package/dist/src/parsers/jsx/state.d.ts +2 -4
  160. package/dist/src/parsers/jsx/state.js +59 -93
  161. package/dist/src/parsers/svelte/css/index.js +1 -1
  162. package/dist/src/parsers/svelte/helpers/bindings.js +18 -19
  163. package/dist/src/parsers/svelte/helpers/children.js +5 -6
  164. package/dist/src/parsers/svelte/helpers/expressions.js +7 -9
  165. package/dist/src/parsers/svelte/helpers/hooks.js +2 -2
  166. package/dist/src/parsers/svelte/helpers/post-process.js +49 -70
  167. package/dist/src/parsers/svelte/helpers/string.js +5 -5
  168. package/dist/src/parsers/svelte/html/actions.js +17 -10
  169. package/dist/src/parsers/svelte/html/each.js +11 -16
  170. package/dist/src/parsers/svelte/html/element.js +68 -78
  171. package/dist/src/parsers/svelte/html/fragment.js +3 -3
  172. package/dist/src/parsers/svelte/html/if-else.js +11 -18
  173. package/dist/src/parsers/svelte/html/index.js +14 -14
  174. package/dist/src/parsers/svelte/html/mustache-tag.js +5 -5
  175. package/dist/src/parsers/svelte/html/slot.js +5 -5
  176. package/dist/src/parsers/svelte/html/text.js +7 -14
  177. package/dist/src/parsers/svelte/index.js +23 -72
  178. package/dist/src/parsers/svelte/instance/context.js +17 -17
  179. package/dist/src/parsers/svelte/instance/expressions.js +2 -2
  180. package/dist/src/parsers/svelte/instance/functions.js +35 -30
  181. package/dist/src/parsers/svelte/instance/hooks.js +4 -5
  182. package/dist/src/parsers/svelte/instance/imports.js +11 -21
  183. package/dist/src/parsers/svelte/instance/index.js +22 -22
  184. package/dist/src/parsers/svelte/instance/properties.js +11 -23
  185. package/dist/src/parsers/svelte/instance/reactive.js +11 -11
  186. package/dist/src/parsers/svelte/instance/references.js +13 -13
  187. package/dist/src/parsers/svelte/instance/statements.js +3 -3
  188. package/dist/src/parsers/svelte/module/index.js +14 -26
  189. package/dist/src/parsers/svelte/typescript/index.js +27 -36
  190. package/dist/src/plugins/compile-away-builder-components.js +223 -156
  191. package/dist/src/plugins/compile-away-components.js +13 -21
  192. package/dist/src/plugins/map-styles.js +7 -7
  193. package/dist/src/symbols/symbol-processor.js +44 -62
  194. package/dist/src/targets.js +19 -19
  195. package/dist/src/types/mitosis-node.js +1 -1
  196. package/package.json +1 -1
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createTypescriptProject = exports.getContextSymbols = exports.getPropsSymbol = exports.removeMitosisImport = void 0;
4
- var ts_morph_1 = require("ts-morph");
5
- var babel_transform_1 = require("./babel-transform");
6
- var removeMitosisImport = function (code) {
7
- return (0, babel_transform_1.babelTransformExpression)(code, {
8
- ImportDeclaration: function (path) {
9
- if (path.node.source.value === '@builder.io/mitosis') {
10
- path.remove();
11
- }
12
- },
13
- });
14
- };
4
+ const ts_morph_1 = require("ts-morph");
5
+ const babel_transform_1 = require("./babel-transform");
6
+ const removeMitosisImport = (code) => (0, babel_transform_1.babelTransformExpression)(code, {
7
+ ImportDeclaration(path) {
8
+ if (path.node.source.value === '@builder.io/mitosis') {
9
+ path.remove();
10
+ }
11
+ },
12
+ });
15
13
  exports.removeMitosisImport = removeMitosisImport;
16
- var getPropsSymbol = function (ast) {
17
- var propsSymbol = undefined;
18
- return ast.forEachChild(function (node) {
14
+ const getPropsSymbol = (ast) => {
15
+ let propsSymbol = undefined;
16
+ return ast.forEachChild((node) => {
19
17
  var _a;
20
18
  if (propsSymbol !== undefined)
21
19
  return undefined;
@@ -30,17 +28,17 @@ var getPropsSymbol = function (ast) {
30
28
  });
31
29
  };
32
30
  exports.getPropsSymbol = getPropsSymbol;
33
- var getContextSymbols = function (ast) {
34
- var contextSymbols = new Set();
35
- ast.forEachDescendant(function (node) {
31
+ const getContextSymbols = (ast) => {
32
+ const contextSymbols = new Set();
33
+ ast.forEachDescendant((node) => {
36
34
  if (!ts_morph_1.Node.isVariableDeclaration(node))
37
35
  return;
38
- var initializer = node.getInitializer();
36
+ const initializer = node.getInitializer();
39
37
  if (!ts_morph_1.Node.isCallExpression(initializer))
40
38
  return;
41
39
  if (initializer.getExpression().getText() !== 'useContext')
42
40
  return;
43
- var contextSymbol = node.getNameNode().getSymbol();
41
+ const contextSymbol = node.getNameNode().getSymbol();
44
42
  if (contextSymbol === undefined)
45
43
  return;
46
44
  contextSymbols.add(contextSymbol);
@@ -48,16 +46,18 @@ var getContextSymbols = function (ast) {
48
46
  return contextSymbols;
49
47
  };
50
48
  exports.getContextSymbols = getContextSymbols;
51
- var getProject = function (tsConfigFilePath) {
49
+ const getProject = (tsConfigFilePath) => {
52
50
  try {
53
- return new ts_morph_1.Project({ tsConfigFilePath: tsConfigFilePath });
51
+ return new ts_morph_1.Project({ tsConfigFilePath });
54
52
  }
55
53
  catch (err) {
56
- throw new Error("Error creating Typescript Project. Make sure `tsConfigFilePath` points to a valid tsconfig.json file.\n Path received: \"".concat(tsConfigFilePath, "\"\n "));
54
+ throw new Error(`Error creating Typescript Project. Make sure \`tsConfigFilePath\` points to a valid tsconfig.json file.
55
+ Path received: "${tsConfigFilePath}"
56
+ `);
57
57
  }
58
58
  };
59
- var createTypescriptProject = function (tsConfigFilePath) {
60
- var project = getProject(tsConfigFilePath);
61
- return { project: project };
59
+ const createTypescriptProject = (tsConfigFilePath) => {
60
+ const project = getProject(tsConfigFilePath);
61
+ return { project };
62
62
  };
63
63
  exports.createTypescriptProject = createTypescriptProject;
@@ -1,7 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.objectHasKey = void 0;
4
- var objectHasKey = function (object, key) {
5
- return key in object;
6
- };
4
+ const objectHasKey = (object, key) => key in object;
7
5
  exports.objectHasKey = objectHasKey;
@@ -1,13 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.runPostCodePlugins = exports.runPreCodePlugins = exports.runPostJsonPlugins = exports.runPreJsonPlugins = void 0;
4
- var runPreJsonPlugins = function (_a) {
5
- var _b;
6
- var json = _a.json, plugins = _a.plugins, options = _a.options;
7
- var useJson = json;
8
- for (var _i = 0, plugins_1 = plugins; _i < plugins_1.length; _i++) {
9
- var plugin = plugins_1[_i];
10
- var preFunction = (_b = plugin(options).json) === null || _b === void 0 ? void 0 : _b.pre;
4
+ const runPreJsonPlugins = ({ json, plugins, options, }) => {
5
+ var _a;
6
+ let useJson = json;
7
+ for (const plugin of plugins) {
8
+ const preFunction = (_a = plugin(options).json) === null || _a === void 0 ? void 0 : _a.pre;
11
9
  if (preFunction) {
12
10
  useJson = preFunction(json) || json;
13
11
  }
@@ -15,13 +13,11 @@ var runPreJsonPlugins = function (_a) {
15
13
  return useJson;
16
14
  };
17
15
  exports.runPreJsonPlugins = runPreJsonPlugins;
18
- var runPostJsonPlugins = function (_a) {
19
- var _b;
20
- var json = _a.json, plugins = _a.plugins, options = _a.options;
21
- var useJson = json;
22
- for (var _i = 0, plugins_2 = plugins; _i < plugins_2.length; _i++) {
23
- var plugin = plugins_2[_i];
24
- var postFunction = (_b = plugin(options).json) === null || _b === void 0 ? void 0 : _b.post;
16
+ const runPostJsonPlugins = ({ json, plugins, options, }) => {
17
+ var _a;
18
+ let useJson = json;
19
+ for (const plugin of plugins) {
20
+ const postFunction = (_a = plugin(options).json) === null || _a === void 0 ? void 0 : _a.post;
25
21
  if (postFunction) {
26
22
  useJson = postFunction(json) || json;
27
23
  }
@@ -29,13 +25,11 @@ var runPostJsonPlugins = function (_a) {
29
25
  return useJson;
30
26
  };
31
27
  exports.runPostJsonPlugins = runPostJsonPlugins;
32
- var runPreCodePlugins = function (_a) {
33
- var _b;
34
- var code = _a.code, plugins = _a.plugins, options = _a.options, json = _a.json;
35
- var string = code;
36
- for (var _i = 0, plugins_3 = plugins; _i < plugins_3.length; _i++) {
37
- var plugin = plugins_3[_i];
38
- var preFunction = (_b = plugin(options).code) === null || _b === void 0 ? void 0 : _b.pre;
28
+ const runPreCodePlugins = ({ code, plugins, options, json, }) => {
29
+ var _a;
30
+ let string = code;
31
+ for (const plugin of plugins) {
32
+ const preFunction = (_a = plugin(options).code) === null || _a === void 0 ? void 0 : _a.pre;
39
33
  if (preFunction) {
40
34
  string = preFunction(string, json);
41
35
  }
@@ -43,13 +37,11 @@ var runPreCodePlugins = function (_a) {
43
37
  return string;
44
38
  };
45
39
  exports.runPreCodePlugins = runPreCodePlugins;
46
- var runPostCodePlugins = function (_a) {
47
- var _b;
48
- var code = _a.code, plugins = _a.plugins, options = _a.options, json = _a.json;
49
- var string = code;
50
- for (var _i = 0, plugins_4 = plugins; _i < plugins_4.length; _i++) {
51
- var plugin = plugins_4[_i];
52
- var postFunction = (_b = plugin(options).code) === null || _b === void 0 ? void 0 : _b.post;
40
+ const runPostCodePlugins = ({ code, plugins, options, json, }) => {
41
+ var _a;
42
+ let string = code;
43
+ for (const plugin of plugins) {
44
+ const postFunction = (_a = plugin(options).code) === null || _a === void 0 ? void 0 : _a.post;
53
45
  if (postFunction) {
54
46
  string = postFunction(string, json);
55
47
  }
@@ -4,45 +4,43 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.angularToMitosisComponent = void 0;
7
- var compiler_1 = require("@angular/compiler");
8
- var core_1 = require("@babel/core");
9
- var lodash_1 = require("lodash");
10
- var typescript_1 = __importDefault(require("typescript"));
11
- var babel_transform_1 = require("../helpers/babel-transform");
12
- var bindings_1 = require("../helpers/bindings");
13
- var capitalize_1 = require("../helpers/capitalize");
14
- var create_mitosis_component_1 = require("../helpers/create-mitosis-component");
15
- var create_mitosis_node_1 = require("../helpers/create-mitosis-node");
16
- var getTsAST = function (code) {
7
+ const compiler_1 = require("@angular/compiler");
8
+ const core_1 = require("@babel/core");
9
+ const lodash_1 = require("lodash");
10
+ const typescript_1 = __importDefault(require("typescript"));
11
+ const babel_transform_1 = require("../helpers/babel-transform");
12
+ const bindings_1 = require("../helpers/bindings");
13
+ const capitalize_1 = require("../helpers/capitalize");
14
+ const create_mitosis_component_1 = require("../helpers/create-mitosis-component");
15
+ const create_mitosis_node_1 = require("../helpers/create-mitosis-node");
16
+ const getTsAST = (code) => {
17
17
  return typescript_1.default.createSourceFile('code.ts', code, typescript_1.default.ScriptTarget.Latest, true);
18
18
  };
19
- var transformBinding = function (binding, _options) {
19
+ const transformBinding = (binding, _options) => {
20
20
  return (0, babel_transform_1.babelTransformCode)(binding, {
21
- Identifier: function (path) {
22
- var name = path.node.name;
21
+ Identifier(path) {
22
+ const name = path.node.name;
23
23
  if ((core_1.types.isObjectProperty(path.parent) && path.parent.key === path.node) ||
24
24
  (core_1.types.isMemberExpression(path.parent) && path.parent.property === path.node)) {
25
25
  return;
26
26
  }
27
27
  if (!(name.startsWith('state.') || name === 'event' || name === '$event')) {
28
- path.replaceWith(core_1.types.identifier("state.".concat(name)));
28
+ path.replaceWith(core_1.types.identifier(`state.${name}`));
29
29
  }
30
30
  },
31
31
  });
32
32
  };
33
- var isElement = function (node) {
34
- // TODO: theres got to be a better way than this
35
- return Array.isArray(node.attributes);
36
- };
37
- var isTemplate = function (node) {
38
- // TODO: theres got to be a better way than this
39
- return Array.isArray(node.templateAttrs);
40
- };
41
- var isText = function (node) { return typeof node.value === 'string'; };
42
- var isBoundText = function (node) { return typeof node.value === 'object'; };
43
- var angularTemplateNodeToMitosisNode = function (node, options) {
33
+ const isElement = (node) =>
34
+ // TODO: theres got to be a better way than this
35
+ Array.isArray(node.attributes);
36
+ const isTemplate = (node) =>
37
+ // TODO: theres got to be a better way than this
38
+ Array.isArray(node.templateAttrs);
39
+ const isText = (node) => typeof node.value === 'string';
40
+ const isBoundText = (node) => typeof node.value === 'object';
41
+ const angularTemplateNodeToMitosisNode = (node, options) => {
44
42
  if (isTemplate(node)) {
45
- var ngIf = node.templateAttrs.find(function (item) { return item.name === 'ngIf'; });
43
+ const ngIf = node.templateAttrs.find((item) => item.name === 'ngIf');
46
44
  if (ngIf) {
47
45
  return (0, create_mitosis_node_1.createMitosisNode)({
48
46
  name: 'Show',
@@ -54,11 +52,11 @@ var angularTemplateNodeToMitosisNode = function (node, options) {
54
52
  children: [angularTemplateNodeToMitosisNode((0, lodash_1.omit)(node, 'templateAttrs'), options)],
55
53
  });
56
54
  }
57
- var ngFor = node.templateAttrs.find(function (item) { return item.name === 'ngFor'; });
55
+ const ngFor = node.templateAttrs.find((item) => item.name === 'ngFor');
58
56
  if (ngFor) {
59
- var value = ngFor.value.source;
60
- var split = value.split(/let\s|\sof\s/);
61
- var _let = split[0], itemName = split[1], _of = split[2], expression = split[3];
57
+ const value = ngFor.value.source;
58
+ const split = value.split(/let\s|\sof\s/);
59
+ const [_let, itemName, _of, expression] = split;
62
60
  return (0, create_mitosis_node_1.createMitosisNode)({
63
61
  name: 'For',
64
62
  bindings: {
@@ -72,31 +70,28 @@ var angularTemplateNodeToMitosisNode = function (node, options) {
72
70
  }
73
71
  }
74
72
  if (isElement(node)) {
75
- var properties = {};
76
- var bindings = {};
77
- for (var _i = 0, _a = node.inputs; _i < _a.length; _i++) {
78
- var input = _a[_i];
73
+ const properties = {};
74
+ const bindings = {};
75
+ for (const input of node.inputs) {
79
76
  bindings[input.name] = (0, bindings_1.createSingleBinding)({
80
77
  code: transformBinding(input.value.source, options),
81
78
  });
82
79
  }
83
- for (var _b = 0, _c = node.outputs; _b < _c.length; _b++) {
84
- var output = _c[_b];
80
+ for (const output of node.outputs) {
85
81
  bindings['on' + (0, capitalize_1.capitalize)(output.name)] = (0, bindings_1.createSingleBinding)({
86
82
  code: transformBinding(output.handler
87
83
  .source // TODO: proper reference replace
88
84
  .replace(/\$event/g, 'event'), options),
89
85
  });
90
86
  }
91
- for (var _d = 0, _e = node.attributes; _d < _e.length; _d++) {
92
- var attribute = _e[_d];
87
+ for (const attribute of node.attributes) {
93
88
  properties[attribute.name] = attribute.value;
94
89
  }
95
90
  return (0, create_mitosis_node_1.createMitosisNode)({
96
91
  name: node.name,
97
- properties: properties,
92
+ properties,
98
93
  bindings: bindings,
99
- children: node.children.map(function (node) { return angularTemplateNodeToMitosisNode(node, options); }),
94
+ children: node.children.map((node) => angularTemplateNodeToMitosisNode(node, options)),
100
95
  });
101
96
  }
102
97
  if (isText(node)) {
@@ -114,34 +109,32 @@ var angularTemplateNodeToMitosisNode = function (node, options) {
114
109
  },
115
110
  });
116
111
  }
117
- throw new Error("Element node type {".concat(node, "} is not supported"));
112
+ throw new Error(`Element node type {${node}} is not supported`);
118
113
  };
119
- var angularTemplateToMitosisNodes = function (template, options) {
120
- var ast = (0, compiler_1.parseTemplate)(template, '.');
121
- var blocks = ast.nodes.map(function (node) { return angularTemplateNodeToMitosisNode(node, options); });
114
+ const angularTemplateToMitosisNodes = (template, options) => {
115
+ const ast = (0, compiler_1.parseTemplate)(template, '.');
116
+ const blocks = ast.nodes.map((node) => angularTemplateNodeToMitosisNode(node, options));
122
117
  return blocks;
123
118
  };
124
- var parseTypescript = function (code, options) {
125
- var component = (0, create_mitosis_component_1.createMitosisComponent)();
126
- var ast = getTsAST(code);
127
- for (var _i = 0, _a = ast.statements; _i < _a.length; _i++) {
128
- var statement = _a[_i];
119
+ const parseTypescript = (code, options) => {
120
+ const component = (0, create_mitosis_component_1.createMitosisComponent)();
121
+ const ast = getTsAST(code);
122
+ for (const statement of ast.statements) {
129
123
  if (typescript_1.default.isClassDeclaration(statement)) {
130
- var decorators = typescript_1.default.canHaveDecorators(statement) ? typescript_1.default.getDecorators(statement) : undefined;
124
+ const decorators = typescript_1.default.canHaveDecorators(statement) ? typescript_1.default.getDecorators(statement) : undefined;
131
125
  if (decorators) {
132
- for (var _b = 0, decorators_1 = decorators; _b < decorators_1.length; _b++) {
133
- var decorator = decorators_1[_b];
126
+ for (const decorator of decorators) {
134
127
  // TODO: proper reference tracing
135
128
  if (typescript_1.default.isCallExpression(decorator.expression))
136
129
  if (typescript_1.default.isIdentifier(decorator.expression.expression) &&
137
130
  decorator.expression.expression.text === 'Component') {
138
- var firstArg = decorator.expression.arguments[0];
131
+ const firstArg = decorator.expression.arguments[0];
139
132
  if (typescript_1.default.isObjectLiteralExpression(firstArg)) {
140
- firstArg.properties.find(function (item) {
133
+ firstArg.properties.find((item) => {
141
134
  if (typescript_1.default.isPropertyAssignment(item)) {
142
135
  if (typescript_1.default.isIdentifier(item.name) && item.name.text === 'template') {
143
136
  if (typescript_1.default.isTemplateLiteral(item.initializer)) {
144
- var template = item.initializer.getText().trim().slice(1, -1);
137
+ const template = item.initializer.getText().trim().slice(1, -1);
145
138
  component.children = angularTemplateToMitosisNodes(template, options);
146
139
  }
147
140
  }
@@ -155,8 +148,7 @@ var parseTypescript = function (code, options) {
155
148
  }
156
149
  return component;
157
150
  };
158
- function angularToMitosisComponent(code, options) {
159
- if (options === void 0) { options = {}; }
151
+ function angularToMitosisComponent(code, options = {}) {
160
152
  return parseTypescript(code, options);
161
153
  }
162
154
  exports.angularToMitosisComponent = angularToMitosisComponent;