@builder.io/mitosis 0.0.78 → 0.0.79

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 (143) hide show
  1. package/dist/src/generators/html.js +6 -3
  2. package/dist/src/generators/qwik/component-generator.js +51 -46
  3. package/dist/src/generators/qwik/stable-inject.d.ts +5 -0
  4. package/dist/src/generators/qwik/stable-inject.js +50 -0
  5. package/dist/src/generators/react/state.js +6 -4
  6. package/dist/src/generators/solid/state/signals.js +6 -7
  7. package/dist/src/generators/solid/state/store.js +6 -7
  8. package/dist/src/helpers/babel-transform.d.ts +0 -1
  9. package/dist/src/helpers/babel-transform.js +2 -3
  10. package/dist/src/helpers/get-state-object-string.js +1 -5
  11. package/dist/src/helpers/handle-missing-state.js +1 -1
  12. package/dist/src/helpers/plugins/process-code.js +1 -1
  13. package/dist/src/helpers/process-http-requests.js +1 -1
  14. package/dist/src/index.d.ts +1 -0
  15. package/dist/src/index.js +1 -0
  16. package/dist/src/parsers/builder/builder.js +7 -6
  17. package/dist/src/parsers/builder/helpers.js +1 -1
  18. package/dist/src/parsers/jsx/function-parser.js +2 -2
  19. package/dist/src/parsers/jsx/helpers.js +0 -4
  20. package/dist/src/parsers/jsx/hooks.js +2 -2
  21. package/dist/src/parsers/jsx/state.js +2 -2
  22. package/dist/src/parsers/svelte/css/index.d.ts +3 -0
  23. package/dist/src/parsers/svelte/css/index.js +8 -0
  24. package/dist/src/parsers/svelte/helpers/bindings.d.ts +3 -0
  25. package/dist/src/parsers/svelte/helpers/bindings.js +75 -0
  26. package/dist/src/parsers/svelte/helpers/children.d.ts +5 -0
  27. package/dist/src/parsers/svelte/helpers/children.js +23 -0
  28. package/dist/src/parsers/svelte/helpers/expressions.d.ts +3 -0
  29. package/dist/src/parsers/svelte/helpers/expressions.js +22 -0
  30. package/dist/src/parsers/svelte/helpers/hooks.d.ts +2 -0
  31. package/dist/src/parsers/svelte/helpers/hooks.js +15 -0
  32. package/dist/src/parsers/svelte/helpers/mitosis-node.d.ts +2 -0
  33. package/dist/src/parsers/svelte/helpers/mitosis-node.js +15 -0
  34. package/dist/src/parsers/svelte/helpers/post-process.d.ts +9 -0
  35. package/dist/src/parsers/svelte/helpers/post-process.js +177 -0
  36. package/dist/src/parsers/svelte/helpers/string.d.ts +3 -0
  37. package/dist/src/parsers/svelte/helpers/string.js +26 -0
  38. package/dist/src/parsers/svelte/html/actions.d.ts +3 -0
  39. package/dist/src/parsers/svelte/html/actions.js +40 -0
  40. package/dist/src/parsers/svelte/html/each.d.ts +35 -0
  41. package/dist/src/parsers/svelte/html/each.js +24 -0
  42. package/dist/src/parsers/svelte/html/element.d.ts +3 -0
  43. package/dist/src/parsers/svelte/html/element.js +222 -0
  44. package/dist/src/parsers/svelte/html/fragment.d.ts +3 -0
  45. package/dist/src/parsers/svelte/html/fragment.js +16 -0
  46. package/dist/src/parsers/svelte/html/if-else.d.ts +3 -0
  47. package/dist/src/parsers/svelte/html/if-else.js +37 -0
  48. package/dist/src/parsers/svelte/html/index.d.ts +5 -0
  49. package/dist/src/parsers/svelte/html/index.js +79 -0
  50. package/dist/src/parsers/svelte/html/mustache-tag.d.ts +3 -0
  51. package/dist/src/parsers/svelte/html/mustache-tag.js +23 -0
  52. package/dist/src/parsers/svelte/html/slot.d.ts +3 -0
  53. package/dist/src/parsers/svelte/html/slot.js +25 -0
  54. package/dist/src/parsers/svelte/html/text.d.ts +30 -0
  55. package/dist/src/parsers/svelte/html/text.js +21 -0
  56. package/dist/src/parsers/svelte/index.d.ts +2 -0
  57. package/dist/src/parsers/svelte/index.js +105 -0
  58. package/dist/src/parsers/svelte/instance/context.d.ts +5 -0
  59. package/dist/src/parsers/svelte/instance/context.js +59 -0
  60. package/dist/src/parsers/svelte/instance/expressions.d.ts +3 -0
  61. package/dist/src/parsers/svelte/instance/expressions.js +11 -0
  62. package/dist/src/parsers/svelte/instance/functions.d.ts +3 -0
  63. package/dist/src/parsers/svelte/instance/functions.js +61 -0
  64. package/dist/src/parsers/svelte/instance/hooks.d.ts +5 -0
  65. package/dist/src/parsers/svelte/instance/hooks.js +33 -0
  66. package/dist/src/parsers/svelte/instance/imports.d.ts +3 -0
  67. package/dist/src/parsers/svelte/instance/imports.js +42 -0
  68. package/dist/src/parsers/svelte/instance/index.d.ts +3 -0
  69. package/dist/src/parsers/svelte/instance/index.js +125 -0
  70. package/dist/src/parsers/svelte/instance/properties.d.ts +3 -0
  71. package/dist/src/parsers/svelte/instance/properties.js +34 -0
  72. package/dist/src/parsers/svelte/instance/reactive.d.ts +3 -0
  73. package/dist/src/parsers/svelte/instance/reactive.js +24 -0
  74. package/dist/src/parsers/svelte/instance/references.d.ts +4 -0
  75. package/dist/src/parsers/svelte/instance/references.js +68 -0
  76. package/dist/src/parsers/svelte/instance/statements.d.ts +3 -0
  77. package/dist/src/parsers/svelte/instance/statements.js +10 -0
  78. package/dist/src/parsers/svelte/module/index.d.ts +3 -0
  79. package/dist/src/parsers/svelte/module/index.js +46 -0
  80. package/dist/src/parsers/svelte/types/index.d.ts +4 -0
  81. package/dist/src/parsers/svelte/types/index.js +2 -0
  82. package/dist/src/parsers/svelte/typescript/index.d.ts +7 -0
  83. package/dist/src/parsers/svelte/typescript/index.js +130 -0
  84. package/dist/src/plugins/compile-away-builder-components.d.ts +2 -5
  85. package/dist/src/types/config.d.ts +0 -5
  86. package/dist/src/types/mitosis-component.d.ts +3 -11
  87. package/dist/src/types/mitosis-component.js +0 -11
  88. package/dist/tsconfig.build.tsbuildinfo +1 -1
  89. package/package.json +14 -1
  90. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mAccordion/high.jsx +0 -0
  91. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mAccordion/low.jsx +0 -240
  92. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mAccordion/med.jsx +0 -4
  93. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mFor/high.jsx +0 -0
  94. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mFor/low.jsx +0 -54
  95. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mFor/med.jsx +0 -4
  96. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mImage/high.js +0 -9
  97. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mImage/low.js +0 -0
  98. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mImage/med.js +0 -151
  99. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mImage.slow/high.js +0 -9
  100. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mImage.slow/low.js +0 -0
  101. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mImage.slow/med.js +0 -151
  102. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mbindings/high.cjs +0 -0
  103. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mbindings/low.cjs +0 -45
  104. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mbindings/med.cjs +0 -3
  105. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mbutton/high.js +0 -3
  106. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mbutton/low.js +0 -25
  107. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mbutton/med.js +0 -31
  108. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mcomponent/033[2m/>//033[22mbindings/high.jsx +0 -0
  109. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mcomponent/033[2m/>//033[22mbindings/low.jsx +0 -108
  110. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mcomponent/033[2m/>//033[22mbindings/med.jsx +0 -7
  111. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mcomponent/033[2m/>//033[22mcomponent/inputs/high.cjsx +0 -9
  112. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mcomponent/033[2m/>//033[22mcomponent/inputs/low.cjsx +0 -0
  113. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mcomponent/033[2m/>//033[22mcomponent/inputs/med.cjsx +0 -68
  114. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mfor-loop.bindings/high.cjs +0 -0
  115. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mfor-loop.bindings/low.cjs +0 -58
  116. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mfor-loop.bindings/med.cjs +0 -5
  117. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mhello_world/033[2m/>//033[22mstylesheet/high.jsx +0 -0
  118. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mhello_world/033[2m/>//033[22mstylesheet/low.jsx +0 -26
  119. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mhello_world/033[2m/>//033[22mstylesheet/med.jsx +0 -4
  120. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mmount/high.cjs +0 -0
  121. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mmount/low.cjs +0 -47
  122. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mmount/med.cjs +0 -3
  123. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mpage-with-symbol/high.js +0 -0
  124. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mpage-with-symbol/low.js +0 -33
  125. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mpage-with-symbol/med.js +0 -4
  126. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mshow-hide/high.jsx +0 -9
  127. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mshow-hide/low.jsx +0 -0
  128. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mshow-hide/med.jsx +0 -170
  129. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22msvg/high.js +0 -0
  130. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22msvg/low.js +0 -30
  131. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22msvg/med.js +0 -4
  132. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodo/033[2m/>//033[22mTodo.cjs/high.cjs +0 -19
  133. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodo/033[2m/>//033[22mTodo.cjs/low.cjs +0 -0
  134. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodo/033[2m/>//033[22mTodo.cjs/med.cjs +0 -51
  135. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodo/033[2m/>//033[22mTodo.js/high.js +0 -19
  136. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodo/033[2m/>//033[22mTodo.js/low.js +0 -0
  137. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodo/033[2m/>//033[22mTodo.js/med.js +0 -47
  138. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodo/033[2m/>//033[22mTodo.tsx/high.tsx +0 -19
  139. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodo/033[2m/>//033[22mTodo.tsx/low.tsx +0 -0
  140. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodo/033[2m/>//033[22mTodo.tsx/med.tsx +0 -43
  141. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodos/033[2m/>//033[22mTodo.tsx/high.tsx +0 -7
  142. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodos/033[2m/>//033[22mTodo.tsx/low.tsx +0 -34
  143. package/dist/test/src/__tests__/qwik.test.ts/033[2m/>//033[22mqwik/033[2m/>//033[22mtodos/033[2m/>//033[22mTodo.tsx/med.tsx +0 -4
@@ -99,9 +99,11 @@ var addUpdateAfterSet = function (json, options) {
99
99
  if ((0, is_mitosis_node_1.isMitosisNode)(item)) {
100
100
  for (var key in item.bindings) {
101
101
  var value = (_a = item.bindings[key]) === null || _a === void 0 ? void 0 : _a.code;
102
- var newValue = addUpdateAfterSetInCode(value, options);
103
- if (newValue !== value) {
104
- item.bindings[key].code = newValue;
102
+ if (value) {
103
+ var newValue = addUpdateAfterSetInCode(value, options);
104
+ if (newValue !== value) {
105
+ item.bindings[key].code = newValue;
106
+ }
105
107
  }
106
108
  }
107
109
  }
@@ -351,6 +353,7 @@ var blockToHtml = function (json, options, blockOptions) {
351
353
  return str;
352
354
  };
353
355
  function addUpdateAfterSetInCode(code, options, useString) {
356
+ if (code === void 0) { code = ''; }
354
357
  if (useString === void 0) { useString = options.format === 'class' ? 'this.update' : 'update'; }
355
358
  var updates = 0;
356
359
  return (0, babel_transform_1.babelTransformExpression)(code, {
@@ -16,7 +16,6 @@ exports.componentToQwik = void 0;
16
16
  var babel_transform_1 = require("../../helpers/babel-transform");
17
17
  var fast_clone_1 = require("../../helpers/fast-clone");
18
18
  var collect_css_1 = require("../../helpers/styles/collect-css");
19
- var mitosis_component_1 = require("../../types/mitosis-component");
20
19
  var state_1 = require("../../helpers/state");
21
20
  var add_prevent_default_1 = require("./add-prevent-default");
22
21
  var convert_method_to_function_1 = require("./convert-method-to-function");
@@ -24,7 +23,7 @@ var jsx_1 = require("./jsx");
24
23
  var src_generator_1 = require("./src-generator");
25
24
  var plugins_1 = require("../../modules/plugins");
26
25
  var traverse_1 = __importDefault(require("traverse"));
27
- var stable_serialize_1 = require("./stable-serialize");
26
+ var stable_inject_1 = require("./stable-inject");
28
27
  Error.stackTraceLimit = 9999;
29
28
  // TODO(misko): styles are not processed.
30
29
  var DEBUG = false;
@@ -84,7 +83,7 @@ var componentToQwik = function (userOptions) {
84
83
  : (0, src_generator_1.invoke)(file.import(file.qwikModule, 'component$'), [componentFn]), true, true);
85
84
  file.exportDefault(component.name);
86
85
  emitStyles(file, css_1);
87
- DEBUG && file.exportConst('COMPONENT', (0, stable_serialize_1.stableJSONserialize)(component));
86
+ DEBUG && file.exportConst('COMPONENT', JSON.stringify(component));
88
87
  var sourceFile = '// GENERATED BY MITOSIS\n\n' + file.toString();
89
88
  if (userOptions.plugins) {
90
89
  sourceFile = (0, plugins_1.runPreCodePlugins)(sourceFile, userOptions.plugins);
@@ -108,7 +107,7 @@ function emitExports(file, component) {
108
107
  }
109
108
  function emitTagNameHack(file, component, metadataValue) {
110
109
  if (typeof metadataValue === 'string' && metadataValue) {
111
- file.src.emit(metadataValue, '=', (0, convert_method_to_function_1.convertMethodToFunction)(metadataValue, stateToMethodOrGetter(component.state), getLexicalScopeVars(component)), ';');
110
+ file.src.emit(metadataValue, '=', (0, convert_method_to_function_1.convertMethodToFunction)(metadataValue, getStateMethodsAndGetters(component.state), getLexicalScopeVars(component)), ';');
112
111
  }
113
112
  }
114
113
  function emitUseClientEffect(file, component) {
@@ -165,20 +164,22 @@ function emitUseContextProvider(file, component) {
165
164
  Object.keys(component.context.set).forEach(function (ctxKey) {
166
165
  var context = component.context.set[ctxKey];
167
166
  file.src.emit(file.import(file.qwikModule, 'useContextProvider').localName, '(', context.name, ',', file.import(file.qwikModule, 'useStore').localName, '({');
168
- context.value &&
169
- Object.keys(context.value).forEach(function (prop) {
170
- var propValue = context.value[prop];
171
- file.src.emit(prop, ':');
172
- if ((propValue === null || propValue === void 0 ? void 0 : propValue.type) === 'getter') {
167
+ for (var _i = 0, _a = Object.keys(context.value || {}); _i < _a.length; _i++) {
168
+ var prop = _a[_i];
169
+ var propValue = context.value[prop];
170
+ file.src.emit(prop, ':');
171
+ switch (propValue === null || propValue === void 0 ? void 0 : propValue.type) {
172
+ case 'getter':
173
173
  file.src.emit('(()=>{', extractGetterBody(propValue.code), '})(),');
174
- }
175
- else if (typeof propValue == 'function') {
174
+ continue;
175
+ case 'function':
176
+ case 'method':
176
177
  throw new Error('Qwik: Functions are not supported in context');
177
- }
178
- else {
179
- file.src.emit((0, stable_serialize_1.stableJSONserialize)(propValue));
180
- }
181
- });
178
+ case 'property':
179
+ file.src.emit((0, stable_inject_1.stableInject)(propValue.code), ',');
180
+ continue;
181
+ }
182
+ }
182
183
  file.src.emit('})', ');');
183
184
  });
184
185
  }
@@ -218,7 +219,7 @@ function emitUseStore(file, stateInit) {
218
219
  file.src.emit('<any>');
219
220
  }
220
221
  file.src.emit('(');
221
- file.src.emit((0, stable_serialize_1.stableJSONserialize)(state));
222
+ file.src.emit((0, stable_inject_1.stableInject)(state));
222
223
  file.src.emit(');');
223
224
  }
224
225
  else {
@@ -236,7 +237,7 @@ function emitStateMethodsAndRewriteBindings(file, component, metadata) {
236
237
  var _a;
237
238
  var lexicalArgs = getLexicalScopeVars(component);
238
239
  var state = emitStateMethods(file, component.state, lexicalArgs);
239
- var methodMap = stateToMethodOrGetter(component.state);
240
+ var methodMap = getStateMethodsAndGetters(component.state);
240
241
  rewriteCodeExpr(component, methodMap, lexicalArgs, (_a = metadata.qwik) === null || _a === void 0 ? void 0 : _a.replace);
241
242
  return state;
242
243
  }
@@ -246,7 +247,7 @@ var checkIsObjectWithCodeBlock = function (obj) {
246
247
  function rewriteCodeExpr(component, methodMap, lexicalArgs, replace) {
247
248
  if (replace === void 0) { replace = {}; }
248
249
  (0, traverse_1.default)(component).forEach(function (item) {
249
- if (!((0, mitosis_component_1.checkIsCodeValue)(item) || checkIsObjectWithCodeBlock(item))) {
250
+ if (!checkIsObjectWithCodeBlock(item)) {
250
251
  return;
251
252
  }
252
253
  var code = (0, convert_method_to_function_1.convertMethodToFunction)(item.code, methodMap, lexicalArgs);
@@ -273,34 +274,38 @@ function emitImports(file, component) {
273
274
  function emitStateMethods(file, componentState, lexicalArgs) {
274
275
  var stateValues = {};
275
276
  var stateInit = [stateValues];
276
- var methodMap = stateToMethodOrGetter(componentState);
277
- Object.keys(componentState).forEach(function (key) {
277
+ var methodMap = getStateMethodsAndGetters(componentState);
278
+ for (var key in componentState) {
278
279
  var stateValue = componentState[key];
279
- if ((0, mitosis_component_1.checkIsCodeValue)(stateValue)) {
280
- var code = stateValue.code;
281
- var prefixIdx = 0;
282
- if (stateValue.type === 'getter') {
283
- prefixIdx += 'get '.length;
284
- }
285
- else if (stateValue.type === 'function') {
286
- prefixIdx += 'function '.length;
287
- }
288
- code = code.substring(prefixIdx);
289
- code = (0, convert_method_to_function_1.convertMethodToFunction)(code, methodMap, lexicalArgs).replace('(', "(".concat(lexicalArgs.join(','), ","));
290
- var functionName = code.split(/\(/)[0];
291
- if (stateValue.type === 'getter') {
292
- stateInit.push("state.".concat(key, "=").concat(functionName, "(").concat(lexicalArgs.join(','), ")"));
293
- }
294
- if (!file.options.isTypeScript) {
295
- // Erase type information
296
- code = convertTypeScriptToJS(code);
297
- }
298
- file.exportConst(functionName, 'function ' + code, true);
299
- }
300
- else {
301
- stateValues[key] = stateValue === null || stateValue === void 0 ? void 0 : stateValue.code;
280
+ switch (stateValue === null || stateValue === void 0 ? void 0 : stateValue.type) {
281
+ case 'method':
282
+ case 'getter':
283
+ case 'function':
284
+ var code = stateValue.code;
285
+ var prefixIdx = 0;
286
+ if (stateValue.type === 'getter') {
287
+ prefixIdx += 'get '.length;
288
+ }
289
+ else if (stateValue.type === 'function') {
290
+ prefixIdx += 'function '.length;
291
+ }
292
+ code = code.substring(prefixIdx);
293
+ code = (0, convert_method_to_function_1.convertMethodToFunction)(code, methodMap, lexicalArgs).replace('(', "(".concat(lexicalArgs.join(','), ","));
294
+ var functionName = code.split(/\(/)[0];
295
+ if (stateValue.type === 'getter') {
296
+ stateInit.push("state.".concat(key, "=").concat(functionName, "(").concat(lexicalArgs.join(','), ")"));
297
+ }
298
+ if (!file.options.isTypeScript) {
299
+ // Erase type information
300
+ code = convertTypeScriptToJS(code);
301
+ }
302
+ file.exportConst(functionName, 'function ' + code, true);
303
+ continue;
304
+ case 'property':
305
+ stateValues[key] = stateValue.code;
306
+ continue;
302
307
  }
303
- });
308
+ }
304
309
  return stateInit;
305
310
  }
306
311
  function convertTypeScriptToJS(code) {
@@ -311,7 +316,7 @@ function extractGetterBody(code) {
311
316
  var end = code.lastIndexOf('}');
312
317
  return code.substring(start + 1, end).trim();
313
318
  }
314
- function stateToMethodOrGetter(state) {
319
+ function getStateMethodsAndGetters(state) {
315
320
  var methodMap = {};
316
321
  Object.keys(state).forEach(function (key) {
317
322
  var stateVal = state[key];
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Similar to our `stableJSONSerialize` function, except that it does not stringify the values: it injects them as-is.
3
+ * This is needed for our `MitosisState` values which are JS expressions stored as strings.
4
+ */
5
+ export declare function stableInject(obj: any): string;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stableInject = void 0;
4
+ /**
5
+ * Similar to our `stableJSONSerialize` function, except that it does not stringify the values: it injects them as-is.
6
+ * This is needed for our `MitosisState` values which are JS expressions stored as strings.
7
+ */
8
+ function stableInject(obj) {
9
+ var output = [];
10
+ _serialize(output, obj);
11
+ return output.join('');
12
+ }
13
+ exports.stableInject = stableInject;
14
+ function _serialize(output, obj) {
15
+ if (obj == null) {
16
+ output.push('null');
17
+ }
18
+ else if (typeof obj === 'object') {
19
+ if (Array.isArray(obj)) {
20
+ output.push('[');
21
+ var sep = '';
22
+ for (var i = 0; i < obj.length; i++) {
23
+ output.push(sep);
24
+ _serialize(output, obj[i]);
25
+ sep = ',';
26
+ }
27
+ output.push(']');
28
+ }
29
+ else {
30
+ var keys = Object.keys(obj).sort();
31
+ output.push('{');
32
+ var sep = '';
33
+ for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
34
+ var key = keys_1[_i];
35
+ var value = obj[key];
36
+ if (value !== undefined) {
37
+ output.push(sep);
38
+ output.push(JSON.stringify(key));
39
+ output.push(':');
40
+ _serialize(output, value);
41
+ sep = ',';
42
+ }
43
+ }
44
+ output.push('}');
45
+ }
46
+ }
47
+ else {
48
+ output.push(obj);
49
+ }
50
+ }
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.updateStateSettersInCode = exports.updateStateSetters = exports.getUseStateCode = exports.processHookCode = void 0;
7
7
  var core_1 = require("@babel/core");
8
- var json5_1 = __importDefault(require("json5"));
9
8
  var traverse_1 = __importDefault(require("traverse"));
10
9
  var capitalize_1 = require("../../helpers/capitalize");
11
10
  var is_mitosis_node_1 = require("../../helpers/is-mitosis-node");
@@ -36,11 +35,14 @@ var processStateValue = function (options) {
36
35
  var mapValue = valueMapper(options);
37
36
  return function (_a) {
38
37
  var key = _a[0], stateVal = _a[1];
38
+ if (!stateVal) {
39
+ return '';
40
+ }
39
41
  var getDefaultCase = function () {
40
- return (0, function_1.pipe)(value, json5_1.default.stringify, mapValue, function (x) { return "const [".concat(key, ", ").concat(getSetStateFnName(key), "] = useState(() => (").concat(x, "))"); });
42
+ return (0, function_1.pipe)(value, mapValue, function (x) { return "const [".concat(key, ", ").concat(getSetStateFnName(key), "] = useState(() => (").concat(x, "))"); });
41
43
  };
42
- var value = stateVal === null || stateVal === void 0 ? void 0 : stateVal.code;
43
- var type = stateVal === null || stateVal === void 0 ? void 0 : stateVal.type;
44
+ var value = stateVal.code || '';
45
+ var type = stateVal.type;
44
46
  if (typeof value === 'string') {
45
47
  switch (type) {
46
48
  case 'getter':
@@ -1,10 +1,6 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.getSignalsCode = void 0;
7
- var json5_1 = __importDefault(require("json5"));
8
4
  var function_1 = require("fp-ts/lib/function");
9
5
  var patterns_1 = require("../../../helpers/patterns");
10
6
  var helpers_1 = require("./helpers");
@@ -13,11 +9,14 @@ var processSignalStateValue = function (_a) {
13
9
  var mapValue = (0, helpers_1.updateStateCode)({ options: options, component: component });
14
10
  return function (_a) {
15
11
  var key = _a[0], stateVal = _a[1];
12
+ if (!stateVal) {
13
+ return '';
14
+ }
16
15
  var getDefaultCase = function () {
17
- return (0, function_1.pipe)(value, json5_1.default.stringify, mapValue, function (x) { return "const [".concat(key, ", ").concat((0, helpers_1.getStateSetterName)(key), "] = createSignal(").concat(x, ")"); });
16
+ return (0, function_1.pipe)(value, mapValue, function (x) { return "const [".concat(key, ", ").concat((0, helpers_1.getStateSetterName)(key), "] = createSignal(").concat(x, ")"); });
18
17
  };
19
- var value = stateVal === null || stateVal === void 0 ? void 0 : stateVal.code;
20
- var type = stateVal === null || stateVal === void 0 ? void 0 : stateVal.type;
18
+ var value = stateVal.code;
19
+ var type = stateVal.type;
21
20
  if (typeof value === 'string') {
22
21
  switch (type) {
23
22
  case 'getter':
@@ -8,13 +8,9 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
8
8
  }
9
9
  return to.concat(ar || Array.prototype.slice.call(from));
10
10
  };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
11
  Object.defineProperty(exports, "__esModule", { value: true });
15
12
  exports.getStoreCode = void 0;
16
13
  var core_1 = require("@babel/core");
17
- var json5_1 = __importDefault(require("json5"));
18
14
  var babel_transform_1 = require("../../../helpers/babel-transform");
19
15
  var capitalize_1 = require("../../../helpers/capitalize");
20
16
  var function_1 = require("fp-ts/lib/function");
@@ -45,12 +41,15 @@ var getStoreCode = function (_a) {
45
41
  var mapValue = (0, helpers_1.updateStateCode)({ options: options, component: component });
46
42
  var stateUpdater = function (_a) {
47
43
  var key = _a[0], stateVal = _a[1];
44
+ if (!stateVal) {
45
+ return '';
46
+ }
48
47
  var getCreateStoreStr = function (initialValue) {
49
48
  return "const [".concat(key, ", ").concat((0, helpers_1.getStateSetterName)(key), "] = createStore(").concat(initialValue, ")");
50
49
  };
51
- var getDefaultCase = function () { return (0, function_1.pipe)(value, json5_1.default.stringify, mapValue, getCreateStoreStr); };
52
- var value = stateVal === null || stateVal === void 0 ? void 0 : stateVal.code;
53
- var type = stateVal === null || stateVal === void 0 ? void 0 : stateVal.type;
50
+ var getDefaultCase = function () { return (0, function_1.pipe)(value, mapValue, getCreateStoreStr); };
51
+ var value = stateVal.code;
52
+ var type = stateVal.type;
54
53
  if (typeof value === 'string') {
55
54
  switch (type) {
56
55
  case 'getter':
@@ -3,6 +3,5 @@ import type { Visitor } from '@babel/traverse';
3
3
  export declare const babelTransform: <VisitorContextType = any>(code: string, visitor?: babel.Visitor<VisitorContextType> | undefined) => babel.BabelFileResult | null;
4
4
  export declare const babelTransformCode: <VisitorContextType = any>(code: string, visitor?: babel.Visitor<VisitorContextType> | undefined) => string;
5
5
  declare type ExpressionType = 'expression' | 'unknown' | 'block' | 'functionBody';
6
- export declare const getType: (code: string, initialType: ExpressionType) => ExpressionType;
7
6
  export declare const babelTransformExpression: <VisitorContextType = any>(code: string, visitor: babel.Visitor<VisitorContextType>, initialType?: ExpressionType) => string;
8
7
  export {};
@@ -32,7 +32,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
32
32
  return to.concat(ar || Array.prototype.slice.call(from));
33
33
  };
34
34
  Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.babelTransformExpression = exports.getType = exports.babelTransformCode = exports.babelTransform = void 0;
35
+ exports.babelTransformExpression = exports.babelTransformCode = exports.babelTransform = void 0;
36
36
  var babel = __importStar(require("@babel/core"));
37
37
  var jsxPlugin = require('@babel/plugin-syntax-jsx');
38
38
  var tsPreset = require('@babel/preset-typescript');
@@ -104,13 +104,12 @@ var getType = function (code, initialType) {
104
104
  }
105
105
  return initialType;
106
106
  };
107
- exports.getType = getType;
108
107
  var babelTransformExpression = function (code, visitor, initialType) {
109
108
  if (initialType === void 0) { initialType = 'unknown'; }
110
109
  if (!code) {
111
110
  return '';
112
111
  }
113
- var type = (0, exports.getType)(code, initialType);
112
+ var type = getType(code, initialType);
114
113
  var useCode = type === 'functionBody' ? "function(){".concat(code, "}") : code;
115
114
  if (type !== 'expression') {
116
115
  try {
@@ -10,12 +10,8 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
13
  Object.defineProperty(exports, "__esModule", { value: true });
17
14
  exports.getStateObjectStringFromComponent = exports.stringifyContextValue = exports.getMemberObjectString = void 0;
18
- var json5_1 = __importDefault(require("json5"));
19
15
  var DEFAULT_OPTIONS = {
20
16
  format: 'object',
21
17
  keyPrefix: '',
@@ -56,7 +52,7 @@ var convertStateMemberToString = function (_a) {
56
52
  if (data === false) {
57
53
  return undefined;
58
54
  }
59
- return "".concat(keyPrefix, " ").concat(key).concat(keyValueDelimiter, " ").concat(valueMapper(json5_1.default.stringify(code), 'data', typeParameter));
55
+ return "".concat(keyPrefix, " ").concat(key).concat(keyValueDelimiter, " ").concat(valueMapper(code, 'data', typeParameter));
60
56
  }
61
57
  default:
62
58
  break;
@@ -6,7 +6,7 @@ function handleMissingState(json) {
6
6
  var stateUsed = (0, get_state_used_1.getStateUsed)(json);
7
7
  Array.from(stateUsed).forEach(function (property) {
8
8
  if (!(property in json.state)) {
9
- json.state[property] = { code: null, type: 'property' };
9
+ json.state[property] = { code: 'null', type: 'property' };
10
10
  }
11
11
  });
12
12
  }
@@ -55,7 +55,7 @@ var CODE_PROCESSOR_PLUGIN = function (codeProcessor) {
55
55
  }
56
56
  for (var key in json.state) {
57
57
  var state = json.state[key];
58
- if (state && state.type !== 'property') {
58
+ if (state) {
59
59
  state.code = codeProcessor('state')(state.code);
60
60
  }
61
61
  }
@@ -8,7 +8,7 @@ function processHttpRequests(json) {
8
8
  if (httpRequests) {
9
9
  for (var key in httpRequests) {
10
10
  if (!json.state[key]) {
11
- json.state[key] = { code: null, type: 'property' };
11
+ json.state[key] = { code: 'null', type: 'property' };
12
12
  }
13
13
  var value = httpRequests[key];
14
14
  // TODO: unravel our proxy. aka parse out methods, header, etc
@@ -31,6 +31,7 @@ export declare const useDefaultProps: <T = {
31
31
  }>(value: T) => T;
32
32
  export declare const useStyle: (value: string) => any;
33
33
  export * from './parsers/jsx';
34
+ export * from './parsers/svelte';
34
35
  export * from './parsers/builder';
35
36
  export * from './parsers/angular';
36
37
  export * from './parsers/context';
package/dist/src/index.js CHANGED
@@ -68,6 +68,7 @@ exports.useDefaultProps = useDefaultProps;
68
68
  var useStyle = function (value) { return null; };
69
69
  exports.useStyle = useStyle;
70
70
  __exportStar(require("./parsers/jsx"), exports);
71
+ __exportStar(require("./parsers/svelte"), exports);
71
72
  __exportStar(require("./parsers/builder"), exports);
72
73
  __exportStar(require("./parsers/angular"), exports);
73
74
  __exportStar(require("./parsers/context"), exports);
@@ -704,17 +704,18 @@ var builderContentPartToMitosisComponent = function (builderContent, options) {
704
704
  var customCode = convertExportDefaultToReturn(code);
705
705
  var parsed = getHooks(builderContent);
706
706
  var parsedState = (parsed === null || parsed === void 0 ? void 0 : parsed.state) || {};
707
+ var mitosisState = Object.keys(parsedState).length > 0
708
+ ? parsedState
709
+ : __assign(__assign({}, state), (0, helpers_1.mapBuilderContentStateToMitosisState)(((_c = builderContent.data) === null || _c === void 0 ? void 0 : _c.state) || {}));
707
710
  var componentJson = (0, create_mitosis_component_1.createMitosisComponent)({
708
711
  meta: __assign({ useMetadata: {
709
- httpRequests: (_c = builderContent.data) === null || _c === void 0 ? void 0 : _c.httpRequests,
710
- } }, (((_d = builderContent.data) === null || _d === void 0 ? void 0 : _d.cssCode) && { cssCode: builderContent.data.cssCode })),
711
- inputs: (_f = (_e = builderContent.data) === null || _e === void 0 ? void 0 : _e.inputs) === null || _f === void 0 ? void 0 : _f.map(function (input) { return ({
712
+ httpRequests: (_d = builderContent.data) === null || _d === void 0 ? void 0 : _d.httpRequests,
713
+ } }, (((_e = builderContent.data) === null || _e === void 0 ? void 0 : _e.cssCode) && { cssCode: builderContent.data.cssCode })),
714
+ inputs: (_g = (_f = builderContent.data) === null || _f === void 0 ? void 0 : _f.inputs) === null || _g === void 0 ? void 0 : _g.map(function (input) { return ({
712
715
  name: input.name,
713
716
  defaultValue: input.defaultValue,
714
717
  }); }),
715
- state: Object.keys(parsedState).length > 0
716
- ? parsedState
717
- : __assign(__assign({}, state), (0, helpers_1.mapBuilderContentStateToMitosisState)(((_g = builderContent.data) === null || _g === void 0 ? void 0 : _g.state) || {})),
718
+ state: mitosisState,
718
719
  hooks: __assign({}, ((((_h = parsed === null || parsed === void 0 ? void 0 : parsed.hooks.onMount) === null || _h === void 0 ? void 0 : _h.code) || (customCode && { code: customCode })) && {
719
720
  onMount: (parsed === null || parsed === void 0 ? void 0 : parsed.hooks.onMount) || { code: customCode },
720
721
  })),
@@ -20,7 +20,7 @@ var mapJsonToStateValue = function (value) {
20
20
  return { type: type, code: strippedValue };
21
21
  }
22
22
  }
23
- return { type: 'property', code: value };
23
+ return { type: 'property', code: JSON.stringify(value) };
24
24
  };
25
25
  var mapBuilderContentStateToMitosisState = function (value) { return (0, lodash_1.mapValues)(value, mapJsonToStateValue); };
26
26
  exports.mapBuilderContentStateToMitosisState = mapBuilderContentStateToMitosisState;
@@ -208,7 +208,7 @@ var componentFunctionToJson = function (node, context) {
208
208
  // useState(() => true)
209
209
  if (types.isArrowFunctionExpression(value)) {
210
210
  state[varName] = {
211
- code: (0, helpers_1.parseCodeJson)(value.body),
211
+ code: (0, helpers_1.parseCode)(value.body),
212
212
  type: 'function',
213
213
  };
214
214
  }
@@ -216,7 +216,7 @@ var componentFunctionToJson = function (node, context) {
216
216
  // Value as init, like:
217
217
  // useState(true)
218
218
  state[varName] = {
219
- code: (0, helpers_1.parseCodeJson)(value),
219
+ code: (0, helpers_1.parseCode)(value),
220
220
  type: 'property',
221
221
  };
222
222
  }
@@ -55,10 +55,6 @@ var uncapitalize = function (str) {
55
55
  };
56
56
  exports.uncapitalize = uncapitalize;
57
57
  var parseCode = function (node) {
58
- // if the node is a string literal, make sure to wrap the return value with quotes
59
- // if (types.isStringLiteral(node)) {
60
- // return `"${node.value}"`;
61
- // }
62
58
  return (0, generator_1.default)(node).code;
63
59
  };
64
60
  exports.parseCode = parseCode;
@@ -61,14 +61,14 @@ exports.METADATA_HOOK_NAME = 'useMetadata';
61
61
  * the returned nodes array
62
62
  */
63
63
  var collectModuleScopeHooks = function (nodes, component, options) {
64
- var hookNames = new Set((options.jsonHookNames || []).concat(exports.METADATA_HOOK_NAME));
65
64
  return nodes.filter(function (node) {
66
65
  var hook = getHook(node);
67
66
  if (!hook) {
68
67
  return true;
69
68
  }
70
69
  if (types.isIdentifier(hook.callee)) {
71
- if (hookNames.has(hook.callee.name)) {
70
+ var metadataHooks = new Set((options.jsonHookNames || []).concat(exports.METADATA_HOOK_NAME));
71
+ if (metadataHooks.has(hook.callee.name)) {
72
72
  try {
73
73
  if (component.meta[hook.callee.name]) {
74
74
  component.meta[hook.callee.name] = __assign(__assign({}, component.meta[hook.callee.name]), (0, helpers_1.parseCodeJson)(hook.arguments[0]));
@@ -144,12 +144,12 @@ var processStateObjectSlice = function (item) {
144
144
  // { foo: ('string' as SomeType) }
145
145
  if (types.isTSAsExpression(item.value)) {
146
146
  return {
147
- code: (0, helpers_1.parseCodeJson)(item.value.expression),
147
+ code: (0, helpers_1.parseCode)(item.value.expression),
148
148
  type: 'property',
149
149
  };
150
150
  }
151
151
  return {
152
- code: (0, helpers_1.parseCodeJson)(item.value),
152
+ code: (0, helpers_1.parseCode)(item.value),
153
153
  type: 'property',
154
154
  };
155
155
  }
@@ -0,0 +1,3 @@
1
+ import { Ast } from 'svelte/types/compiler/interfaces';
2
+ import type { SveltosisComponent } from '../types';
3
+ export declare const parseCss: (ast: Ast, json: SveltosisComponent) => void;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCss = void 0;
4
+ var parseCss = function (ast, json) {
5
+ var _a;
6
+ json.style = (_a = ast.css) === null || _a === void 0 ? void 0 : _a.content.styles;
7
+ };
8
+ exports.parseCss = parseCss;
@@ -0,0 +1,3 @@
1
+ import type { MitosisNode } from '../../../types/mitosis-node';
2
+ import type { SveltosisComponent } from '../types';
3
+ export declare function processBindings(json: SveltosisComponent, node: MitosisNode): void;